2012-12-10 44 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