javascript - jQuery post 返回空响应
问题描述
上周我遇到了一个大问题,我似乎无法找到解决方案。
我正在尝试将一些原始 XML 发布到另一家公司为我们开发的服务器,我认为该服务器具有接收此 XML 输入的侦听器。我发布和发送信息很好,但我没有得到任何回复(就像我在高中时喜欢的每个女孩一样......)。
我从 Chrome 得到的错误是:>POST http://xx.xxx.xxx.xxx:xxxx/SLISMESSAGE net::ERR_EMPTY_RESPONSE 我也尝试过其他浏览器,但除了给我的 Firefox 之外,所有浏览器都一样CORS 错误。
当我在服务器上发布监听器时,只会说:获取请求/SLISMESAGE。
var template = [
'<?xml version="1.0"?><request type="create-order"><PATIENT><CODE><?CODE?></CODE><DEPARTURE_DATE><?DEPARTURE_DATE?></DEPARTURE_DATE><LASTNAME><?LASTNAME?></LASTNAME><FIRSTNAME><?FIRSTNAME?></FIRSTNAME><BIRTHDAY><?BIRTHDAY?></BIRTHDAY><SEX><?SEX?></SEX><PHONE1><?PHONE1?></PHONE1><EMAIL><?EMAIL?></EMAIL><HOTEL><?HOTEL?></HOTEL><HOTELNO><?HOTELNO?></HOTELNO></PATIENT><ORDER><ORDERNO><?ORDERNO?></ORDERNO><ORDERDATE><?ORDERDATE?></ORDERDATE><ORDERTIME><?ORDERTIME?></ORDERTIME><SENDERCODE><?SENDERCODE?></SENDERCODE></ORDER><TESTS><TEST><?TEST?></TEST></TESTS></request>'
].join('\r\n');
function update() {
var len = 10;
var randomId = parseInt((Math.random() * 9 + 1) * Math.pow(10,len-1), 10);
//console.log(randomId.toString());
var variables = {
'CODE': $('input[name="wpforms[fields][25]"]').val(),//randomId.toString(),
'DEPARTURE_DATE':$('input[name="wpforms[fields][3][date]"]').val(),
'DEPARTURE_TIME':$('input[name="wpforms[fields][3][time]"]').val(),
'LASTNAME': $('input[name="wpforms[fields][6][last]"]').val(),
'FIRSTNAME': $('input[name="wpforms[fields][6][first]"]').val(),
'BIRTHDAY': $('input[name="BIRTHDAY"]').val(),
'SEX': $('input[name="wpforms[fields][9]"]').val(),
'PHONE1': $('input[name="wpforms[fields][14]"]').val(),
'EMAIL': $('input[name="wpforms[fields][15]"]').val(),
'HOTEL': $('input[name="wpforms[fields][16]"]').val(),
'HOTELNO': $('input[name="wpforms[fields][17]"]').val(),
'TEST':$('input[name="wpforms[fields][2]"]').val(),
'ORDERNO':$('input[name="wpforms[fields][25]"]').val()
};
var newXml = template.replace(/<\?(\w+)\?>/g,
function(match, name) {
return variables[name];
});
console.log(newXml);
var parsedNewXml = $.parseXML(newXml);
//console.log(parsedNewXml);
var order_num = document.getElementById("wpforms-1034-field_25")
$.ajax({
url: "http://xx.xxx.xxx.xxx:8008/SLISMESSAGE",
method: 'POST',
crossDomain: true,
cache: false,
async: true,
timeout:0,
data: newXml,
contentType: "application/xml",
dataType: "xml",
success : function(){
console.log('XML Sent');
alert("Data sent");
},
error : function (xhr, ajaxOptions, thrownError){
console.log(xhr.status);
console.log(thrownError);
console.log('HEYYYYYYYYYYYY');
alert(order_num);
}
});
问题是当我尝试从邮递员那里发布相同的 XML 时,我得到了回复。其中最奇怪的是,当我尝试使用 python 脚本发布时,我也得到了回复!??????请注意,我在 JS 或 jQuery 方面不是那么擅长,我可能在这里真的缺少一些东西,但如果不是,那么 WTH?
我不知道该怎么办。在这一点上,我几乎要放弃了,即使这会在未来搞砸很多事情,但我不知道该怎么办......
Python 是蓝色的 JS 是红色的
请注意,我在 JS 或 jQuery 方面不是那么擅长,我可能在这里真的缺少一些东西,但如果不是,那么 WTH?
我不知道该怎么办。在这一点上,我几乎要放弃了,即使这会在未来搞砸很多事情,但我不知道该怎么办......
解决方案
这可能是 CORS 问题。如果您遇到 cors 错误,您可以在开发人员工具的控制台选项卡中查看。因为如果 cors 配置不正确,浏览器会阻止响应。当您从 Python 访问 api 时,不会发生 cors 问题,因为 cors 检查发生在浏览器中而不是 Python 中
推荐阅读
- mxgraph - mxGraph javascript Grapheditor 保存按钮显示为灰色 - 我可以使用 PHP 保存图形 xml 文件和图像吗?
- c - Unix数据报套接字正在向自身发送消息而不是远程
- delphi - 项目版本设置不断恢复
- html - 用漂亮的汤解析表返回非类型对象
- react-native - 反应本机 numberOfLines 样式问题
- python - 如何从python在sqlite中插入表
- android - Main Activity 总是第一个启动的 Activity 吗?
- android - 无法使用 ProGuard 实例化 AndroidPlatform 类
- ios - CallKit/Voip:呼叫者句柄如何被阻塞?
- mysql - .Net Core - MySqlException:无法添加或更新子行