jQuery post 返回空响应
Posted
技术标签:
【中文标题】jQuery post 返回空响应【英文标题】:jQuery post returns empty response 【发布时间】:2021-09-09 22:11:51 【问题描述】:上周我遇到了一个大问题,我似乎无法找到解决方案。
我正在尝试将一些原始 XML 发布到另一家公司为我们开发的服务器,我认为该服务器具有接收此 XML 输入的侦听器。我发布和发送信息很好,但我没有得到任何回复(就像我在高中时喜欢的每个女孩一样......)。
我从 Chrome 得到的错误是:>POST http://xx.xxx.xxx.xxx:xxxx/SLISMESSAGE net::ERR_EMPTY_RESPONSE 我也尝试过其他浏览器,但所有浏览器都一样,除了 Firefox 给我一个 CORS 错误。
当我在服务器上发布监听器时,只会说:获取请求/SLISMESSAGE。
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 Code
Response Time
Results of Python Code and JS jQuery
Python 是蓝色的 JS 是红色的
请注意,我在 JS 或 jQuery 方面不是那么擅长,我可能在这里确实缺少一些东西,但如果没有,那么 WTH?
我不知道该怎么办。在这一点上,我几乎要放弃了,即使将来会搞砸很多事情,但我不知道该怎么办......
【问题讨论】:
【参考方案1】:这可能是 CORS 问题。如果您遇到 cors 错误,您可以在开发人员工具的控制台选项卡中查看。因为如果 cors 配置不正确,浏览器会阻止响应。当您从 Python 访问 api 时,不会发生 cors 问题,因为 cors 检查发生在浏览器中而不是 Python 中
【讨论】:
以上是关于jQuery post 返回空响应的主要内容,如果未能解决你的问题,请参考以下文章
在对 WebMethod 的 jQuery AJAX 调用中获取空响应,但 Web 方法返回 JSON