【发布时间】:2011-05-12 20:28:49
【问题描述】:
我正在尝试同时创建 jsonp 请求的服务器端和客户端,但我似乎无法使其工作。我查看了许多指南、博客文章等,但几乎每个人都只展示了客户端。
这是我的客户端代码
$.ajax({
dataType: 'application/json',
data: params,
jsonp: 'jsonpCallback',
url: settings.domain + '/httpext.dll?json_cc',
success: function (data) {
//determine the return status
},
error: function (response, status, error) {
//error handling
}
}); //end ajax
现在,服务器正在返回一个像这样的硬编码值
jsonpCallback({"username":"meltingice","posts"1234});
我的问题是我无法让请求和响应一起工作。目前,响应正在返回 application/json,所以如果我更改我的请求 ro 期望 jsonp 它会出错
资源解释为脚本,但使用 MIME 类型 application/json 传输。 未捕获的 ReferenceError:未定义 jsonpCallback
首先,如您所见,我定义了 jsonpCallback。
现在,如果我将 dataType 更改为 application/json,则会收到此错误
XMLHttpRequest cannot load http://myserver/httpext.dll?json_cc&sid=adsfhasjdkfhajksdghjk%3Basdhg&action=SALE&ccCard=&ccNum=&ccExMM=0&ccExYYYY=0&ccCVV2=&holdersName=&totalDue=0&dueDate=11%2F19%2F2010. Origin http://localhost:59905 is not allowed by Access-Control-Allow-Origin.
如您所见,它没有将callback=? 放入网址中。很郁闷。
如何设置服务器端以便可以使用 jsonp 调用它?响应类型需要什么?如何格式化返回的数据,以便我的客户端代码可以拉回数据?
【问题讨论】:
标签: jquery ajax cross-domain jsonp