加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – HTML5帖子请求正文

发布时间:2020-12-16 02:53:23 所属栏目:百科 来源:网络整理
导读: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"
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

在休息客户端,我得到一个完美的命中,并返回一个xml

我尝试用不同的方式提问,但有些人说这是一个交叉问题
如果是,请通过javascript中的代码了解解决方案

请指导

解决方法

首先,我建议用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,它将数据返回到您的脚本.

祝你好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读