我必须在这里遗漏一些东西,因为这似乎是一个非常简单的问题,但我已经尝试了大部分解决方案并且没有任何运气。
我只是尝试创建一个ajax请求跨域并将结果存储到javascrip变量中。我正在获得有效的javascript,我的回调被解雇了,但我的成功永远不会。
我试过了:
将jsonp: false
设为jsonpCallback: myCallback
(现在,如下)
重新启动jsonp: false
和jsonpCallback: mcCallback
并设置网址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');
}
答案 0 :(得分:1)
正如笔记所说,你的服务器必须做出响应 'myCallBack函数({ “一些”: “数据”})'
不仅仅是原始的json: '{ “一些”: “数据”}'
jsonp有点奇怪,它是通过插入脚本标签请求的,cuz脚本标签CAN传输跨域。您的服务器必须提供JS代码,以便在响应到来时执行某些操作 jQuery为您完成大部分浏览器操作。当它发送请求时,它会添加一个参数,如callback = jQuery17209078477467410266_1426708743857
然后它设置了一个该名称的函数,它将在响应时处理响应。 您的服务器必须使用此字符串并构造如下代码: jQuery17209078477467410266_1426708743857({“data”:“the”});
如果你只是传递了json,它将像一个大表达式一样执行并被遗忘。