【发布时间】:2015-02-03 00:02:09
【问题描述】:
我想处理 JSONP 请求中返回的数据,但是我很难进行调用。为什么下面的代码会失败?
HTML 文件:
<!DOCTYPE html>
<html>
<head>
<title>Simple JSONP Test</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="lib/jquery.js"></script>
</head>
<body>
<div>Simple JSONP Test</div>
<script>
// alert('start');
$.ajax({
contentType: "application/json; charset=utf-8",
url: "http://www.myserver.com/simplejsontest.php",
dataType: "jsonp",
success: function (data, textStatus, jqXHR) {
alert('Success! data: ' + data);
},
error: function (xr, msg, e) { alert('Msg: ' + msg + ', error: ' + e + 'xr: ' + xr.toString()); }
});
</script>
</body>
</html>
和php文件simplejsontest.php:
<?php
$myData = array(
//array(
"id" => "1",
"Title" => "Dr.",
"firstName" => "John",
"lastName" => "King");
/*,
array(
"id" => 2,
"Title" => "Dr.",
"firstName" => "John",
"lastName" => "King")
);
*/
//echo $_GET['callback']."(".'{"users":'.json_encode($myData).'})';
echo $_GET['callback']."(". json_encode($myData). ')';
?>
【问题讨论】:
-
请解释一下“无法访问JSON数据”是什么意思;你收到错误消息了吗?
-
$_GET['callback']的值是多少?另外,Ajax 调用的结果是什么?成功还是错误? -
contentType: "application/json; charset=utf-8",— 您正在发出 GET 请求,没有请求正文来描述其内容类型。 -
定义“不工作”。查看浏览器的开发者工具。查看 JavaScript 控制台。它是否报告任何错误?查看“网络”选项卡。是否正在提出请求?它得到回应了吗?它们是否包含您期望的数据?
-
我复制/粘贴了你的代码,它运行没有错误。