我有问题访问由php脚本返回的JSONP数组,我正在为跨域请求工作。 我的代码是:
$('input#searchlocation').click(function () {
$.ajax({
url: 'http://mydomain/searchlocation.php',
type: 'get',
dataType: 'jsonp',
data: $('form#searchlocfrm').serialize(),
processData: false,
crossDomain: true,
contentType: "application/json",
success: function (data) {
$("#searchlocation_result").html("");
$.each(data.items, function (i, locdata) {
console.log(locdata);
});
}
});
});
PHP:返回数组:
echo $_GET["callback"] . "(" . json_encode($res) . ")";
请帮我解释如何在页面中打印回复 非常感谢。
答案 0 :(得分:3)
您需要将?callback=?
附加到您的网址,然后使用.getJSON
$('input#searchlocation').click(function () {
$.getJSON('http://mydomain/searchlocation.php?callback=?', $('form#searchlocfrm').serialize(), function (data) {
$("#searchlocation_result").html("");
$.each(data.items, function (i, locdata) {
console.log(locdata);
});
});
});
答案 1 :(得分:0)
$('input#searchlocation').click(function () {
$.ajax({
url: 'http://mydomain/searchlocation.php',
type: 'get',
dataType: 'jsonp',
data: $('form#searchlocfrm').serialize() + "callback=returnData",
processData: false,
crossDomain: true,
contentType: "application/json"
});
});
function returnData(data){
$("#searchlocation_result").html("");
$.each(data.items, function (i, locdata) {
console.log(locdata);
});
}
这应该是因为它有jsonp的想法,你有一个回调函数,而在ajax中没有成功因为它jsonp
答案 2 :(得分:0)
这应该足够了:
$.ajax({
url: 'http://mydomain/searchlocation.php',
dataType: 'jsonp',
data: $('form#searchlocfrm').serialize(),
success: function (data) {
// ...
}
});
同样在服务器端:
header('Content-type: application/javascript');
echo $_GET["callback"] . "(" . json_encode($res) . ")";