繁体   English   中英

将PHP发布到ASP表单,将XML结果返回到PHP页面。

[英]PHP Post to ASP Form, return XML results to PHP page.

我必须使用的设置以及我需要的设置如下:

  • 我已经获得了一个ASP表单( 在另一个域上 ),该表单在提交时以XML格式输出搜索结果。

  • 我正在开发一个PHP网站( 在我的公司域中

  • 从这个PHP网站上,我需要能够查询上述ASP表单并将XML结果发布回PHP页面( 在我的公司域中

  • 必须将变量“ Client = * ”发送到ASP表单,它才能正常工作。

到目前为止我尝试过的...

  • jQuery.ajax尝试使用以下代码执行正常的发布请求:

     $.ajax({ url: "http://www.example.com/xml/aspfile.asp", crossDomain: true, cache: false, dataType: ($.browser.msie) ? "text" : "xml", data: { Client: "clientname" etc }, type: 'post', xhrFields: { withCredentials: true }, error: function(){ alert("error"); }, success: function(data){ var xml; if (typeof data == "string") { xml = new ActiveXObject("Microsoft.XMLDOM"); xml.async = false; xml.loadXML(data); } else { xml = data; } } }); 

注意:

我已经尝试了上述代码的许多不同迭代,从基本的ajax请求到类似上述的更复杂的请求。

上面的代码返回以下错误,这是我遇到的很多错误。

XML Parsing Error: no element found Location: moz-nullprincipal:{14ce834e-ef24-43f8-b338-7202241298a5} Line Number 1, Column 1:^

我需要的

理想情况下,一些有效的代码...未能就如何使它起作用的想法或建议。

在此先感谢所有发布答案的人员。

编辑:根据要求,这里是XML的外观

<quicksearchresults>
        <heading>
            <title1>River Cruises</title1>
            <title2>Quick Search</title2>
            <cruise_nos>732</cruise_nos>
            <earliest_date>01/08/11</earliest_date>
            <latest_date>01/09/11</latest_date>
            <river>Anywhere</river>
            <linename>Any</linename>
        </heading>
        <rivercruiselist>
            <holdate>28/08/11</holdate>
            <linename>The River Cruise Line</linename>
            <shipname>Esmerelda</shipname>
            <shiplink>url</shiplink>
            <cruisename>Cruise+The+Danube+to+Vienna+%26+Budapest</cruisename>
            <cruiselink>url</cruiselink>
            <river>Danube</river>
            <ratingicon>Images/BudgetIcon.png</ratingicon>
            <flyfrom>Linz</flyfrom>
            <flyback>linz</flyback>
            <cruisenights>7</cruisenights>
            <vacationdays>10</vacationdays>
            <lowprice>0</lowprice>
            <highprice>0</highprice>
            <flights>including Coach</flights>
            <soldout>Yes</soldout>
            <enquiryformlink>url</enquiryformlink>
            <enquiryformimage>Images/TravelEButton.png</enquiryformimage>
        </rivercruiselist>
</quicksearchresults>

使用您的PHP服务器作为代理:您向自己的PHP页面发出AJAX请求,该页面使用curl从外部源获取XML并将其返回给您,以便您可以对其进行解析。

var xml;
if (typeof data == "string") {
    xml = new ActiveXObject("Microsoft.XMLDOM");
    xml.async = false;
    xml.loadXML(data);
} else {
    xml = data;
}

这部分不是必需的,您可以使用jQuery选择器来解析XML。 从外观上看,您的请求没有返回任何结果。 alert(xml)产生什么? AFAIK,您不能执行跨域POST,但是可以通过一些JSONP黑客来进行跨域GET

您的示例XML似乎无效,因为第一个<quicksearchresults>节点从未关闭。

这是一个示例,您必须原谅我损坏的PHP,因为我有一段时间没有使用它了。

// post the contents of the form to our PHP proxy

    $.post("myproxy.php", $("#myform").serialize, function(data) {
    // do something with returned xml here.

    },"xml");

代理示例(myproxy.php):

 <?php 

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "http://www.remotedomain.com/api.php");
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, array(
            'client*' => 'something',
        ));
        $result = curl_exec($ch);
        curl_close($ch);
        echo $result;
 ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM