【发布时间】:2012-02-08 00:51:09
【问题描述】:
我正在为这个问题撞墙。我正在使用 JQuery 1.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 直接进入错误,没有其他描述。如果我在 Chrome 中进行调试,我还会收到一条小消息:
XMLHttpRequest 无法加载 http://removedUrl:8080/SAMPLES。 Access-Control-Allow-Origin 不允许来源http://192.168.2.140。
有谁知道是什么原因造成的。
另外,我在 JQuery 的 ajax 方法中逐步添加了字段:dataType、crossDomain、cache、accepts...只是为了看看它是否有所作为.
谢谢!
【问题讨论】:
-
dataType : 'text',?它“看起来”就像您正在尝试发布 json(但这不是数据中的有效 json:当然),或者真正的有效文本。
标签: jquery xmlhttprequest cross-domain