我正在为这个问题苦苦挣扎。我使用JQuery 1.6.2来使用AJAX方法与运行在单独子域上的简化HTTP服务器进行通信。如果我只是POST一个普通HTML表单,我会得到正确的输出,但是当然我想用Javascript让它更好看。
请注意,URL已被删除,但包括端口8080在内的其他一切都相同(相信我,服务器接受8080上的HTTP请求)。
因此,当我打开Fiddler并运行此页面时,请求顺利发送和返回。我甚至可以看到正确的输出,只是单词“TRUE”。您甚至可以在此处查看整个响应原始内容:
正如我之前所说,此软件使用的HTTP服务器非常简单。但是,当JQuery返回时,直接进入错误状态,没有其他说明。如果我在Chrome中进行调试,还会收到一个小消息,内容如下:
XMLHttpRequest无法加载http://removedUrl:8080/SAMPLES。源http://192.168.2.140未被Access-Control-Allow-Origin允许。
有人知道这可能是什么原因吗?
此外,我已经逐步添加了JQuery的ajax方法中的字段:dataType,crossDomain,cache,accepts...只是为了看看是否有任何区别。
谢谢!
因此,我使用了以下设置的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并运行此页面时,请求顺利发送和返回。我甚至可以看到正确的输出,只是单词“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。源http://192.168.2.140未被Access-Control-Allow-Origin允许。
有人知道这可能是什么原因吗?
此外,我已经逐步添加了JQuery的ajax方法中的字段:dataType,crossDomain,cache,accepts...只是为了看看是否有任何区别。
谢谢!