首页 > 解决方案 > 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代码

响应时间

Python 代码和 JS jQuery 的结果

Python 是蓝色的 JS 是红色的

请注意,我在 JS 或 jQuery 方面不是那么擅长,我可能在这里真的缺少一些东西,但如果不是,那么 WTH?

我不知道该怎么办。在这一点上,我几乎要放弃了,即使这会在未来搞砸很多事情,但我不知道该怎么办......

标签: javascriptpythonjqueryajaxxml

解决方案


这可能是 CORS 问题。如果您遇到 cors 错误,您可以在开发人员工具的控制台选项卡中查看。因为如果 cors 配置不正确,浏览器会阻止响应。当您从 Python 访问 api 时,不会发生 cors 问题,因为 cors 检查发生在浏览器中而不是 Python 中


推荐阅读