是否有可能' PUT'使用JQuery .ajax()进行数据跨域

时间:2014-05-07 09:51:24

标签: javascript jquery ajax json

我们尝试将一些数据放到我们的服务器上,服务器端应该没问题,因为我们已经使用DEV HTTP CLIENT 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对象并获取一个jsonp对象?

2 个答案:

答案 0 :(得分:2)

JSONP是GET操作(具体来说,是通过script标记创建的)。

可以执行跨域PUT,而不是以JSONP方式。您的目标服务器必须通过Cross Origin Resource Sharing允许您的来源(并且您的浏览器必须support CORSXMLHttpRequest,而不是IE8和IE9 XDomainRequest对象 - 尽管您需要IE8和IE9支持,如果你环顾四周,你可以找到一个jQuery插件,让jQuery在这些浏览器上使用XDomainRequest

答案 1 :(得分:0)

如果您使用的是现代浏览器(即Firefox和Chrome,Safari),则可以使用HTML5 API CORS执行此操作。 以下是Using cors

的链接