首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSON不发送jQuery数据

JSON不发送jQuery数据
EN

Stack Overflow用户
提问于 2011-09-19 12:47:58
回答 5查看 7.5K关注 0票数 2

我正在尝试使用jQuery AJAX向运行在本地主机上的服务发送POST,但即使在我设置了jQuery.support.cors = true之后,它仍然返回状态代码0。我还可以从我的浏览器成功导航到我的WCF REST服务。这是我的JavaScript的样子:

代码语言:javascript
运行
复制
    <script>
        jQuery.support.cors = true;
        $(document).ready(function(){
            $.ajax({
                type: "POST",
                url: "http://localhost:8000/Test",
                data: '{"test":"test"}',
                contentType: "application/json",
                dataType: "json",
                success: function (msg) {
                    alert('success');
                },
                error:function(x,e){
                    if(x.status==0){
                        alert('error 0');
                    }
                }
            });
        });
    </script>

有人知道这可能是什么原因吗?我还应该提到,我不能使用jQuery在本地主机上发布任何内容。

根据Fiddler的说法,不发送JSON数据,并且执行HTTP选项而不是POST。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-20 05:58:56

我不想在这个问题上花费更多的时间,所以我求助于使用原始的HTML表单POST,因为JSON的使用在我的情况下不是必须的。

对于任何其他有相同问题的人,请参阅此帖子以获得解释和解决方案:Problem sending JSON data from JQuery to WCF REST method

总而言之,如果希望您的服务响应跨域调用,则它需要能够处理HTTP OPTIONS方法。

票数 2
EN

Stack Overflow用户

发布于 2011-09-20 06:06:30

尝尝这个

代码语言:javascript
运行
复制
var dataObj = {test:"test"};

var json = JSON.stringify(dataObj);

然后在ajax调用中

代码语言:javascript
运行
复制
data: json,
票数 5
EN

Stack Overflow用户

发布于 2012-07-04 18:06:11

您应该使用网络监视器等工具来查看浏览器是否向服务器请求允许的标头(使用OPTIONS标头请求),您可能需要在将实际请求发送到服务器之前在OPTIONS响应中提供正确的标头(请参阅底部的文章)。

此外,您可以尝试将其添加到实际调用或ajaxSetup中,因为您将需要告诉浏览器发送凭据并允许跨域调用(我知道其他人已经提到了'crossDomain'):

代码语言:javascript
运行
复制
$.ajaxSetup({
  crossDomain: true,
  xhrFields: {
    withCredentials: true
  }
});

如果你也有时间,可以读一读这篇文章..https://developer.mozilla.org/en/http_access_control

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7466570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档