![](/img/trans.png)
[英]PHP form reloads current page on POST action, rather than displaying 'success.php' page. Why?
[英]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.