Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax HTML5请求后正文_Ajax_Xml_Web Services_Xmlhttprequest - Fatal编程技术网

Ajax HTML5请求后正文

Ajax HTML5请求后正文,ajax,xml,web-services,xmlhttprequest,Ajax,Xml,Web Services,Xmlhttprequest,如图所示,我在rest客户机中得到了理想的响应 在Google Chrome->中,我得到的状态是0,就绪状态是1,然后是4 在InternetExplorer->中,我的状态为200OK,就绪状态从1、2、3、4变为1,但返回一个空白xml 在rest客户机中,我得到了一个完美的点击,并返回了一个xml 我试着用不同的方式提问,但有人说这是一个跨来源的问题 如果是,请让我通过javascript代码了解解决方案 请引导 服务器说它正在发送文本/普通数据,而不是XML,因此浏览器不会填充req.

如图所示,我在rest客户机中得到了理想的响应

在Google Chrome->中,我得到的状态是0,就绪状态是1,然后是4 在InternetExplorer->中,我的状态为200OK,就绪状态从1、2、3、4变为1,但返回一个空白xml

在rest客户机中,我得到了一个完美的点击,并返回了一个xml

我试着用不同的方式提问,但有人说这是一个跨来源的问题 如果是,请让我通过javascript代码了解解决方案

请引导


服务器说它正在发送文本/普通数据,而不是XML,因此浏览器不会填充req.responseXML。数据应该在req.responseText中。

首先,我建议在jQuery的帮助下重写代码。这将压缩您的代码,使其跨平台,并且更易于阅读和维护:

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;
  }
然后在myprox.php中,类似这样的东西我只是假设这里是php,但这可以很容易地移植到ASP.NET或ASP Classic:

$.ajax({
        url: "myproxy.php",
        type: "POST", ...
澄清一下:这将使您的HTML页面与位于同一服务器(甚至在同一目录中)上的myproxy.php对话,然后myproxy.php通过某个url与服务器对话,该url将数据返回到myproxy.php,而myproxy.php又将数据返回到您的脚本


祝你好运

我不确定,但你能不能加个分号;在下面一行的末尾。有一种可能是因为缺少分号而无法工作

<?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);
?>
改为

console.log("2")

反复要求您检查JS错误控制台,并查看browser developer tools中的Net选项卡,以便调试此问题。你似乎还没有这样做。如果你的问题没有形成一个你可以得到一个好答案的方式,那么编辑这个问题;不要一次又一次地问…我在console.log行中收到一个错误。。。但当我评论它时,什么也没发生。。。它只是通过它什么是错误的???一个错误。什么错误?请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“null”。那么我应该在此处写入什么来获取纯文本数据应该在req.responseText中。我获取了xml数据,但错误是在键入console之后发生的。logsomething错误:“console”未定义,没有此控制台行。。。我无法检索数据是的。如果标题可以由需要权限的页面设置,那么标题就没有多大意义。如果这些语句在一行上,JavaScript会忽略它们的分号
console.log("2")
console.log("2");