jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – JSONP – Access-Control-Allow-Origin和MIME类型错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图创建一个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,所以如果我改变了我的请求,那么期望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=&@R_304_10586@lDue=0&dueDate=11%2F19%2F2010. Origin http://localhost:59905 is not allowed by Access-Control-Allow-Origin.

你可以看到,它不是回调=?进入网址.这令人沮丧.

如何设置服务器端以便我可以使用jsonp调用它?响应类型需要什么?如何格式化返回的数据,以便我的客户端代码可以撤回数据?

解决方法

这不起作用的原因是因为您的服务器总是返回一个硬编码的方法名称,而您的客户端正在使用匿名成功处理程序.这不行.您需要将服务器配置为使用作为参数传递的方法名称,否则它将永远不会在客户端调用成功回调.因此,一旦配置服务器以虑jsoncallBACk查询参数,您可以像这样测试它:

$.getJSON(setTings.domain + '/httpext.dll?json_cc&jsoncallBACk=?',params,function(result) {
    alert('success');
});

现在,服务器将收到可能如下所示的请求:

http://foo.com/httpext.dll?json_cc&jsoncallBACk=jsonp1290183992345

它应该像这样回应:

jsonp1290183992345({"username":"melTingice","posts"1234});

适当的Content-Type以及(application / json).

大佬总结

以上是大佬教程为你收集整理的jquery – JSONP – Access-Control-Allow-Origin和MIME类型错误全部内容,希望文章能够帮你解决jquery – JSONP – Access-Control-Allow-Origin和MIME类型错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。