【发布时间】:2016-10-05 03:51:35
【问题描述】:
我的 PHP 返回了一个字符串。我从 $.ajax 调用 PHP 脚本并尝试 将字符串放入全局变量 以进行进一步操作。它说变量未定义。你能帮帮我吗?
(我用dataType : "jsonp"来避免这里回答的错误Ajax Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource)
我的 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 脚本
<?php
$user = 'JOHN';
echo json_encode($user);
?>
HTML 代码
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script type="text/javascript" src="MyJS.js"></script>
</head>
<body>
</body>
</html>
更新
PHP 脚本
<?php
$name = 'JOHN';
$encoded2 = json_encode(array('name'=>$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);
【问题讨论】:
-
试试
dataType : "json" -
从 url 中删除 localhost 部分。浏览器对此做出了奇怪的反应
-
@AkhileshBChandran 如果我尝试得到以下错误stackoverflow.com/questions/23959912/… 我按照那里的建议使用了 jsonp
-
@Toumash 嗯,我认为这不是一个好主意。这个地址是我的脚本在我的 xammp Apache 服务器中的 URL。请看这个stackoverflow.com/questions/37632325/…
-
@JasonKrs 第一个问题是您尝试回显字符串而不是 JSON。您通过 json_encoding 键值数组
json_encode(array('name'=>$name));解决了这个问题。然后下一个问题是与沙盒相关的。由于您的 URL 的性质,当您向 PHP 脚本发送 AJAX 请求时,访问被拒绝。header('Access-Control-Allow-Origin: *');解决了那部分。你可以在这里阅读更多:jqfundamentals.com/chapter/ajax-deferreds
标签: javascript php jquery ajax