jQueryajax在简单帖子中总是返回错误



我遇到了这个问题。我使用JQuery1.6.2将AJAX方法用于一个运行在单独子域上的非常简化的HTTP服务器。如果我只是发布一个普通的HTML表单,我会得到正确的输出,但当然我想用Javascript做得更好。

所以我使用AJAX方法设置如下:

$('.send_sample').click(function () {
        var request = $.ajax({
            url : "http://removedurl:8080/SAMPLES",
            type : 'POST',
            dataType : 'text',
            crossDomain : true,
            cache : false,
            accepts : 'text/plain',
            data : {username : '<?php echo $_SESSION['username'] ?>', first_name : '<?php echo $_SESSION['first_name']; ?>', last_name : '<?php echo $_SESSION['last_name']; ?>', company : '<?php echo $_SESSION['company']; ?>', sequence_id : '', filename : '', sample_id : '', quantity : '', output_file : '', delivery : '', email_copy : ''},
            success : function (return_value) {
                console.log(return_value);
            },
            error : function (error_info) {
                console.log(error_info);
            },
            complete : function (complete_jqXHR, textStatus) {
                console.log(textStatus);
            }
        });
        console.log(request);
    });

请注意,url被删除了,但其他一切都是一样的,包括端口8080(相信我,服务器接受8080上的HTTP请求。

因此,当我打开fiddler并运行此页面时,请求会在fiddler中发出并返回。我甚至看到了正确的输出,就是单词TRUE。你甚至可以在这里看到完整的原始响应:

HTTP/1.1 200 200 OK
Connection: close
Content-Length: 8
Server: Indy/9.0.18
TRUE

正如我之前所说,这个软件使用的HTTP服务器非常简单。但是JQuery在返回时直接转到Error,没有其他描述。如果我在Chrome中调试,我还会收到一条小消息,上面写着:

XMLHttpRequest无法加载http://removedUrl:8080/SAMPLES.起源http://192.168.2.140访问控制允许来源不允许。

有人知道是什么原因造成的吗。

此外,我还在JQuery的ajax方法中增量添加了字段:dataType、crossDomain、cache、accepts。。。只是想看看它是否会有所不同。

谢谢!

您必须使用jsonp来进行跨站点请求
设置crossDomain:true将没有帮助,因为浏览器会阻止来自外部域的回复
这是一个众所周知的javascript限制,但是,正如我所说,您可以使用jsonp来消除它。你可以在谷歌上搜索,你会发现很多资源
请注意,您需要修改服务器"http://removedurl:8080/SAMPLES"以便获得jsonp响应。
如果您无法访问服务器,您将不得不依赖服务器端代理(PHP/ASP.Net等)

相关内容

  • 没有找到相关文章

最新更新