【发布时间】:2014-01-23 09:14:32
【问题描述】:
我无法从跨域访问网络服务调用。请指教。我在这里粘贴了我的来源。
PHP:网络服务响应
$data['response'] = 2;
header('Content-type: application/json');
echo json_encode($data);
jQuery Ajax 调用:
$.ajax({
type: 'GET',
url: cross-domain-url,
data:{ param1:'123', param2:'123' },
dataType:'jsonp',
crossDomain: 'true',
async: true,
success:function (data) {
alert('success');
},
error:function(){
alert('error');
}
});
跨域 URL 响应:
{"ResultCode":2}
我总是只收到错误消息。我不知道为什么。我可以在 Firefox 检查区域看到以下消息。
SyntaxError: missing ; before statement
{"ResultCode":2}
请帮帮我。
解决方案:
修改这一行, echo 'someCallBackString('.json_encode($data).');'; 而不是 echo json_encode($data);
创建了函数 someCallBackString 并继续我的实现。
【问题讨论】:
-
必须有一个文件名和行号与错误一起打印。这可能会帮助您调试。可以查一下吗?
-
检查一下:stackoverflow.com/questions/19456146/… 你必须正确构建 JSON
-
@Pulkit:谢谢。我已经检查了文件。仅包含 "{"ResultCode":2}"。它在第 13 个字符上显示错误。那是“:”。
-
如果您想对数据进行编码,为什么要使用 header(),因为它会在 ajax 成功时响应您,其次您会错过 ';'脚本中的操作员请提供行号并首先直接点击您的跨域网址
-
你的跨域 url 的输出是什么?我的意思是它会产生有效的 json 吗?