2014-05-21 40 views
0

我有一個問題,我的JavaScript函數,我注意到Http發佈請求沒有到達我的服務器..所以我插入一些警告框在我的JavaScript代碼,看看哪裏是問題..XMLHttpRequest JavaScript未運行後打開方法

這裏是我的javascript函數:

function callService(id) { 

    id.innerHTML = "Clicked!"; 
    alert("Before do XMLHttpRequest!"); 
    var xmlhttp = new XMLHttpRequest(); 

    alert("Before do url!"); 
    var url = "http://this_is_an_address_valid_but_i_wont_show_you/"; 

    alert("Before do open!"); 


    xmlhttp.open("POST", url, true); 

    alert("Before do setRequestHeader!"); 
    xmlhttp.setRequestHeader("Content-type", "application/json"); 

    alert("Before do onreadystatechange!"); 
    xmlhttp.onreadystatechange = function() { //Call a function when the state changes. 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      alert(xmlhttp.responseText); 
     } 
    } 

    alert("Before do parameters!"); 
    var parameters = JSON.stringify({"Values": {"Value": 2500,"ItemNumber": "1"},"PartnerID": "S","ProdCode": "C","TC": "111","OpCode": "10"}); 

    alert("Before do send!"); 
    xmlhttp.send(parameters); 
    alert("After do send!!"); 

} 

我注意到,我沒有看到警告框「之前做setRequestHeader!」 ,所以我猜XMLHttpRequest的打開方法不起作用?

非常感謝,有人可以幫助我嗎?

+1

我建議你用'console.log()'替換'alert()'函數,然後檢查控制檯日誌(只需按下瀏覽器中的F12)來檢查任何錯誤消息 –

+0

但是我將在控制檯上看到,將是我使用「console.log()」插入的日誌,這就像使用alert()一樣。控制檯不會顯示任何其他錯誤嗎? – TiagoM

+0

感謝您的幫助,我注意到現在控制檯上的方法打開時出現錯誤,它說「權限被拒絕」能幫助我嗎? – TiagoM

回答

-2

您有跨域問題:請檢查此答案:How to make cross domain request

簡而言之,如果JS文件已從另一個服務器獲得(安全原因),則無法對服務器進行AJAX調用。

+1

如果存在跨域問題,則在收到響應之前它不會顯示。在調用send()方法之前,它肯定不會顯示出來。 – Quentin

+0

我不同意,而打開():http://stackoverflow.com/questions/5793831/script5-access-is-denied-in-ie9-on-xmlhttprequest –