AJAX将表单提交到远程URL并从XML响应中提取URL

时间:2011-11-28 22:09:31

标签: javascript jquery xml ajax

我是JavaScript和Ajax的新手。

我有一个表单,该表单发布到远程URL并返回包含一些数据和URL的XML响应。我需要提取URL并重定向到XML响应中的URL。

这是我的表格

<form target="_blank" action='https://requesturl.co.uk/requestservice.asmx/Request_v4' method="POST"  >
<input type='hidden' value='' name='AffiliateID' /><input type='hidden' value='' name='AffiliatePW' /><input type='hidden' value='' name='ReqMode' /><input type='hidden' value='' name='ReqTotalTimeout' /><input type='hidden' value='' name='ReqLenderTimeout' /><input type='hidden' value='' name='ReqLoanAmount' /><input type='hidden' value='' name='AppTitle' /><input type='hidden' value='' name='AppFirstName' /><input type='hidden' value='' name='AppLastName' /><input type='hidden' value='' name='AppEmail' /><input type='hidden' value='' name='AppDOBDay' /><input type='hidden' value='' name='AppDOBMonth' /><input type='hidden' value='' name='AppDOBYear' /><input type='hidden' value='' name='AppHomePhone' /><input type='hidden' value='' name='AppWorkPhone' /><input type='hidden' value='' name='AppMobilePhone' /><input type='hidden' value='' name='AppPostCode' /><input type='hidden' value='' name='AppHouseNumber' /><input type='hidden' value='' name='AppStreet' /><input type='hidden' value='' name='AppTown' /><input type='hidden' value='' name='AppCounty' /><input type='hidden' value='' name='EmpIncomeType' /><input type='hidden' value='' name='EmpEmployerName' /><input type='hidden' value='' name='EmpTimeAtEmployer' /><input type='hidden' value='' name='EmpNetMonthlyPay' /><input type='hidden' value='' name='EmpPayFrequency' /><input type='hidden' value='' name='EmpDirectPayment' /><input type='hidden' value='' name='EmpNextPayDay' /><input type='hidden' value='' name='EmpNextPayMonth' /><input type='hidden' value='' name='EmpNextPayYear' /><input type='hidden' value='' name='EmpFollowingPayDay' /><input type='hidden' value='' name='EmpFollowingPayMonth' /><input type='hidden' value='' name='EmpFollowingPayYear' /><input type='hidden' value='' name='EmpNINumber' /><input type='hidden' value='' name='BankAccount' /><input type='hidden' value='' name='BankSortcode' /><input type='hidden' value='' name='BankDebitCard' /><input type='hidden' value='' name='AppAddressYears' /><input type='hidden' value='' name='AppAddressMonths' /><input type='hidden' value='' name='AppHomeStatus' /><input type='hidden' value='' name='ReqConsent' /><input type='hidden' value='' name='ReqIPAddress' /><input type='hidden' value='' name='ReqAgent' /><input type='hidden' value='' name='ReqMarketingOptIn' /><input type='hidden' value='' name='ReqDomain' />
<input type="submit" value="Invoke" class="button">

XML响应是

<RequestResult><Result>Accepted</Result><FailureReasons/><AcceptedLender>LendingStream</AcceptedLender><RedirectURL>http://redirecttothisURL.com/testing.htm</RedirectURL><PPDReference>6524845</PPDReference></RequestResult>
经过一些研究后,看起来Jquery最好这样做,但是如果由于浏览器不允许而将其发布到远程URL会产生问题,我会感到困惑。

非常感谢任何帮助或想法。

由于

3 个答案:

答案 0 :(得分:0)

是的,所有ajax调用都必须与您的网页位于同一个域中;浏览器禁止您使用或不使用jQuery对远程地址进行ajax调用。

最常见的方法是使用简单的代理。您调用自己的代理(位于您的域中),代理会创建对远程地址的Web请求,当返回时,代理会将该结果转发给您的ajax请求的回调。代理人基本上只是一个愚蠢的中间人。

您也可以使用JSONP来解决,但必须为此设置远程端。

Silverlight也可以让你解决这个问题,但同样,另一端必须为此设置;他们必须有一个clientaccesspolicy.xml文件。

答案 1 :(得分:0)

是的,由于same origin policy限制,您无法使用javascript来执行此请求。您可以编写一个服务器端脚本来执行获取远程资源的请求,然后对您域上的此服务器端脚本使用AJAX请求,该脚本将带来XML并允许您解析它。

显然,根据您使用的服务器端语言,可能有不同的方法来实现它。

但是如果你想使用jQuery,那么在你的域上设置这个服务器端脚本之后就很容易了。您只需使用$.ajax()方法:

$.ajax({
    url: '/url_to_your_server_side_script_that_serves_as_a_bridge',
    success: function(xml) {
        alert($('Result', xml).text());
    }
});

这是一个live demo

答案 2 :(得分:0)

我同意jQuery是一个很好的方法,我最近发现了这个非常方便的插件,可以让你从其他网站检索数据。也许你可以这样抓住网址然后再使用它?

http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/