【发布时间】:2013-11-19 17:05:37
【问题描述】:
我一定在这里遗漏了一些东西,因为这似乎是一个非常简单的问题,但我已经尝试了大多数解决方案,但都没有运气。
我只是想创建一个 ajax 跨域请求并将结果存储到 javascrip 变量中。我得到了有效的 javascript,我的回调被触发了,但我的成功从来没有。
我试过了:
将jsonp: false 设置为jsonpCallback: myCallback(如下所示)
删除 jsonp: false 和 jsonpCallback: mcCallback 并设置 url url?callback=?
其他一些事情......重点是,我做错了什么,这是非常基本的
对于下面的示例,我确实得到了alert('hello'),但随后我在控制台中得到了parsererror(来自错误函数)
在阅读评论后编辑以添加现在的情况。不过,同样的问题。不调用成功
$.ajax({
url: 'http://localhost/faqservice/questions',
type: 'GET',
dataType: 'jsonp',
error: function (x, t, r) { alert(x + t + r); },
success: function (data) {
alert('success');
}
});
问题最初是如何提出的
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://localhost/faqservice/questions",
dataType: 'jsonp',
jsonp: false,
jsonpCallback: myCallback,
error: function (httpReq, status, exception) {
console.log(status);
},
success: function(data) {
alert('success');
}
});
});
myCallback = function (data) {
alert('hello');
}
【问题讨论】:
-
服务器端响应代码是什么样的?您使用什么将响应发送回客户端?
-
您的服务器响应应该类似于 'myCallback({"some":"data"})'。是这样吗?
-
响应没有包含在 myCallback 中,没有。只是一个简单的 json 响应
-
@Tom 那很好。这意味着您的服务器只需要更新以支持 JSONP,因为您的客户端代码是正确的。您的服务器应采用
$_GET["callback"]的值并将您的 json 字符串包装在其中,例如,jQuery3424723891473_90284732(YOURJSONHERE)