2012-12-10 239 views
2

我想從javascript發送ajax請求以使用以下代碼從salesforce獲取數據,但我不斷收到Error:0消息。看來我的請求沒有正確發送。我不知道我的代碼有什麼問題。如何發送ajax請求

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript"> 
    var $j = jQuery.noConflict(); 
    $j(function(){ 
     var url = 'https://myorg-developeredition.na14.force.com/services/apexrest/clsapi'; 
     $j.ajax({ 
      url: url, 
      type: 'POST', 
      success : function() { 
       alert('Hello'); 
      }, 
      error : function(jqXHR, textStatus, errorThrown) { 
       alert('Error: ' + jqXHR.status); 
      },     
     }); 
    }); 
</script> 

但是,當我在瀏覽器中輸入相同的url時,我得到了salesforce的響應。它顯示

<response>myresponse</response> 

感謝

回答

1

您要發送,您的瀏覽器由於Same Origin Policy防止跨域請求。

要發送跨域請求,您必須使用jsonp

var url = 'https://myorg-developeredition.na14.force.com/services/apexrest/clsapi'; 
$j.ajax({ 
    url: url, 
    type: 'POST', 
    dataType: 'jsonp', 
    success : function() { 
     alert('Hello'); 
    }, 
    error : function(jqXHR, textStatus, errorThrown) { 
     alert('Error: '+jqXHR.status); 
    } // <-- remove the trailing comma you had here 
}); 
+0

感謝您的及時回覆。我按照你的建議修改了我的代碼,現在我得到了Error:200消息。 – user1311776

+0

200意味着帖子以某種形式成功(http://webdesign.about.com/cs/http/p/http2xx.htm),您應該檢查您的ajax調用收到的數據/ errortext。最有可能的是,它會說返回的格式不是jsonp(不是100%確定,所以一定要檢查它)。 – Jozzeh

+0

它顯示parseerror,因爲我的XML格式的響應。有沒有辦法將響應轉換爲JSON格式? – user1311776