jQuery AJAX请求结果未定义。

27 浏览
0 Comments

jQuery AJAX请求结果未定义。

我有一个由我的PHP返回的字符串。我通过$.ajax调用PHP脚本,并尝试将字符串放入一个全局变量中以进行进一步处理。它显示变量未定义。你能帮我吗?

(我使用dataType : "jsonp"来避免这里回答的错误Ajax跨域请求被阻止:同源策略不允许读取远程资源)

我的javascript(Jquery, Ajax, ...)脚本

var my_data;
function get_my_data(){
$.ajax({
    type: 'GET',
    url: 'http://localhost:8012/My_PHP_scripts/test_1.php',
    dataType : "jsonp",
    crossDomain:true,
    success: function (my_data){
        console.log(my_data);
    }
    });
}
$( document ).ready(get_my_data);

PHP脚本


HTML代码









 

更新

PHP脚本

$name));    
echo $encoded2;
die( $encoded2 );
?>

JS脚本

var my_data;
function get_my_data(){
$.ajax({
    type: 'GET',
    url: 'http://localhost:8012/My_PHP_scripts/test_1.php',
    dataType : "jsonp",
    crossDomain:true,
    success: function (result){
        my_data = result;
        console.log(my_data.name);
        console.log(result.name);
    }
    });
alert(my_data.name);
}
$( document ).ready(get_my_data);

0
0 Comments

原因:问题是由于全局变量my_data和success函数的参数变量不是同一个变量导致的。需要将参数的值赋给全局变量来解决这个问题。

解决方法:可以更改参数的变量名,然后将其值赋给全局变量。

success: function(result) {
    my_data = result;
}

具体可以参考此示例:https://jsfiddle.net/f6fdx26x/

更新:

你还有一个问题,由nope回答了。刚才做了那个。还是一样。my_data仍然是undefined。

success: function(result) {
    my_data = result;
    console.log(my_data);
}
});
alert(my_data);

是的,你有两个问题。一个是这个问题,另一个是编码问题,由回答者回答了。

0