ajax – HTML5帖子请求正文
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 在休息客户端,我得到一个完美的命中,并返回一个xml 我尝试用不同的方式提问,但有些人说这是一个交叉问题 请指导 解决方法
首先,我建议用jQuery的帮助重写代码.这将压缩您的代码,使其跨平台,并且更易于阅读和维护:
<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,它将数据返回到您的脚本. 祝你好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |