2011-11-28 62 views
0

我是JavaScript和Ajax的新手。AJAX將表單提交到遠程URL並從XML提取URL reponse

我有一個表單發佈到遠程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將導致問題,由於瀏覽器不允許它。

任何幫助或想法將不勝感激。

感謝

回答

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

0

是的,所有的Ajax調用必須是同一個域作爲你的網頁;瀏覽器禁止你使用或不使用jQuery進行遠程地址的Ajax調用。

最常見的解決方法是在您的最後使用一個簡單的代理。您可以調用您自己的代理(位於您的域中),並且代理會創建一個到遠程地址的Web請求,並且當代理返回時,代理會將該結果轉發給您的ajax請求的回調。代理人基本上只是一個愚蠢的中間人。

你也可以通過使用JSONP來避開,但是必須爲此設置遠端。 Silverlight也可以幫你解決這個問題,但另一方面,必須爲此設置另一端;他們必須有一個clientaccesspolicy.xml文件。