function sendPost(){ alert("IN SEND POST"); var username = document.myForm.username.value; var password = document.myForm.password.value; alert("username"+username); alert("password"+password); console.log("in java script"); var url = "some url"; alert("IN url SEND POST"); var data = "<MESSAGE><HEADER><LOGIN>005693</LOGIN></HEADER><SESSION><LATITUDE>0.0</LATITUDE><LONGITUDE>0.0</LONGITUDE><APP>SRO</APP><ORG>MNM</ORG><TRANSACTION>PRELOGIN</TRANSACTION><KEY>PRELOGIN/ID</KEY><TYPE>PRELOGIN</TYPE></SESSION><PAYLOAD><PRELOGIN><ID>005693</ID><USERNAME>005693</USERNAME><PASSWORD>tech@2014</PASSWORD></PRELOGIN></PAYLOAD></MESSAGE>"; console.log("2") var req; if(window.XMLHttpRequest) { console.log("2"); try { req = new XMLHttpRequest(); } catch(e) { req = false; } } else if(window.ActiveXObject) { console.log("3"); try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } } } console.log("4"); req.onreadystatechange=function() { console.log("5"); if (req.readyState==4 && req.status==200) { console.log("ready state accepted"); xmlDoc=req.responseXML; console.log("xmlDoc"+xmlDoc); alert("xmlDoc"+xmlDoc); txt=""; x=xmlDoc.getElementsByTagName("FirsTNAME"); y=xmlDoc.getElementsByTagName("LASTNAME"); console.log("Response achieved"+x); } } req.open("POST",url,true); console.log("6"); req.setRequestHeader("Content-type","application/xml"); req.send(data); console.log("7"); return true; }
我完全像我想要的那样在休息客户端得到回应
在谷歌浏览器中 – >我的状态为0,就绪状态为1,然后是4
在Internet Explorer中 – >我获得状态为200 OK并且就绪状态从1,2,3,4变为但是返回空白xml
我尝试用不同的方式提问,但有些人说这是一个交叉问题
如果是,请通过javascript中的代码了解解决方案
请指导
解决方法
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script type="text/javascript"> function sendPost(){ $.ajax({ url: "some url",type: "POST",contentType: "text/xml",data: "<MESSAGE><HEADER><LOGIN>005693</LOGIN></HEADER>" + "<SESSION><LATITUDE>0.0</LATITUDE><LONGITUDE>0.0</LONGITUDE>" + "<APP>SRO</APP><ORG>MNM</ORG><TRANSACTION>PRELOGIN</TRANSACTION>" + "<KEY>PRELOGIN/ID</KEY><TYPE>PRELOGIN</TYPE></SESSION>" + "<PAYLOAD><PRELOGIN><ID>005693</ID>" + "<USERNAME>" + $("#username").val() + "</USERNAME>" + "<PASSWORD>" + $("#password").val() + "</PASSWORD>" + "</PRELOGIN></PAYLOAD></MESSAGE>",dataType: 'xml',success: function(data) { var firstname = $(data).find("FirsTNAME").text(); var lastname = $(data).find("LASTNAME").text(); alert('Hello ' + firstname + ' ' + lastname); },error: function(jqXHR,textStatus,errorThrown) { alert('Error'); } }); } </script>
其次,源自您的服务器的javascript(例如www.myserver.com)无法与其他服务器通信(即您无法从www.anotherserver.com请求数据).嗯,你可以,但如果是这样你需要确保从www.anotherserver.com发送的答案将采用JSONP格式 – 然后你只需将上面例子中的“dataType”更改为“jsonp”即可以访问结果如“data.firstname”和“data.lastname”.
无论如何,在你的情况下,我会在我自己的网络服务器上创建一个本地代理(在你有上述.HTML文件的同一文件夹中),它会将请求转发给其他服务器并返回结果.从而:
$.ajax({ url: "myproxy.PHP",...
然后在myprox.PHP中,就像这样(我只是在这里假设PHP,但这可以很容易地移植到ASP.NET或ASP Classic):
<?PHP // myproxy.PHP forwards the posted data to some other url,and returns the result $clientContext = stream_context_create(array( 'http' => array( 'method' => 'POST','header' => 'Content-Type: text/xml; charset=utf-8','content' => http_get_request_body() ) )); print file_get_contents("some url",false,$clientContext); ?>
澄清:这将使你的HTML页面与myproxy.PHP(它位于同一个服务器上[甚至在同一目录中])进行对话,然后myproxy.PHP在“some url”处与服务器对话,它将数据返回给myproxy .PHP,它将数据返回到您的脚本.
祝你好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。