2016-01-07 60 views
1
  1. 由於同源策略,我無法使用AJAX(XMLHTTPRequest)。
  2. 我無法訪問服務器內部,我也沒有 服務器代碼。
  3. 服務器只支持HTTPMethods:POST, OPTIONS
  4. 我不能使用第三個服務器(例如,對於使用curl)

我可以用一個表單提交如何使用HTML表單而不是AJAX

<form method="post" action="some-web-server.com/something.JSON"> 
    <input name="param" value="some JSON param" /> 
</form> 

得到答案,但我被重定向到JSON.page以獲得答案。 有沒有可能在JS中獲得響應?類似的東西:

<form target="javascript: someFunctionUsingTheResponse(this.submit())" method="post" action="someServer/st.JSON" > 

,並在HTML的頭

<script type="text/javascript"> 
    function someFunctionUsingTheResponse(text){ 
    alert(text); 
    } 
</script> 

更新: 我已經嘗試過創建一個<iframe name="dummy">和形式的目標設置到這個虛擬的iframe <form target="dummy">其作品相當好(在Chrome中,不在IE中工作),但我仍然無法使用JS訪問iFrame的數據。 (來源策略)

+0

你有代碼的服務器端的一部分?您可以將ajax請求發送到您自己的服務器,並從那裏執行「curl」以從遠程JSON獲取答案,然後將該值返回到您的前端。 – martincarlin87

+0

'jsonp'就是你需要的 –

+0

'jsonp'很棒,但據我所知遠程服務器必須支持它,否則它將無法工作,即將所有內容都包含在回調參數中,因此它可能不適用於OP。 – martincarlin87

回答

3

是否有可能獲得在JS響應?

否。常規表單提交不會使數據可用於JS。

在JS中獲取數據的任何方法都將遵守相同的原產地策略。

有各種各樣ways to circumvent the same origin policy但提交到目標URL的常規表單不是其中之一。

-1

的表單元素應該是這樣的:

<form onsubmit="someFunctionUsingTheResponse()"> 

您可以使用此爲您的功能:

function someFunctionUsingTheResponse(){ 
    xmlhttp=new XMLHttpRequest(); 
    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      alert(xmlhttp.responseText); 
     } 
    } 
    xmlhttp.open("GET", "some-web-server.com/something.JSON", false); 
    xmlhttp.send(); 
} 
+1

問題的第一行:由於同源策略,無法使用AJAX – Joel

相關問題