Javascript 有没有可能';把';使用JQuery.ajax()跨域访问数据

Javascript 有没有可能';把';使用JQuery.ajax()跨域访问数据,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我们尝试将一些数据放入服务器,服务器端应该可以,因为我们已经使用DEV HTTP客户端Chrome扩展进行了测试。这是我们的代码,我认为它应该可以工作,但我不知道如何修复跨域错误 $.ajax({ type: "PUT", url: '...../add?callback=JSONPCallback', contentType: "application/jsonp; charset=utf-8", data: JSON.strin

我们尝试将一些数据放入服务器,服务器端应该可以,因为我们已经使用DEV HTTP客户端Chrome扩展进行了测试。这是我们的代码,我认为它应该可以工作,但我不知道如何修复跨域错误

$.ajax({
        type: "PUT",
        url: '...../add?callback=JSONPCallback',
        contentType: "application/jsonp; charset=utf-8",
        data: JSON.stringify({
            "name": "Test",
        }),
        jsonpCallback: "JSONPCallback",
        crossDomain: true,
        success: function (result) {
            console.log('Success!');
        },
        error: function (a, b, c) {
            console.error(a + " " + b + " " + c);
        },
        fail: function (e) {
            alert('fail');
        }
    });
}

在GET请求中,我们使用了'dataType:'jsonp',但这对PUT不起作用。是否有可能将json对象放回success方法并获取jsonp对象?

jsonp是一个
GET
操作(具体地说,是通过
脚本
标记创建的操作)


您可以跨域
PUT
,但不能采用JSONP方式。您的目标服务器必须允许您的源服务器通过(并且您的浏览器必须使用
XMLHttpRequest
,而不是IE8和IE9
XDomainRequest
对象-尽管如果您需要IE8和IE9支持,如果您环顾四周,您可以找到一个jQuery插件,使jQuery在这些浏览器上使用
XDomainRequest
).

如果您使用的是现代浏览器(即Firefox和chrome、safari),那么您可以使用HTML5 API CORS来实现这一点。
这是JSONP的链接,本质上,JSONP只能发送
GET
请求。但是,必须有可能跨域放置数据?是的,它被称为跨域的存在,将类型更改为“GET”。我认为“PUT”和jsonp是相互排斥的。所以RESTful服务必须提供一个“访问控制允许来源”白名单(使用CORS)。所以用jquery不可能做到这一点?@Thunder:是的,你可以用jquery做到这一点。请再读一遍。如果您使用的是IE10+或任何现代非IE浏览器,只要服务器允许您的源代码,就可以使用jQuery的
$.ajax
。如果您需要支持IE8或IE9,那么您需要一个插件,使jQuery在封面下使用非标准的
XDomainRequest
而不是
XMLHttpRequest