2013-04-02 22 views
2

我從託管在同一個CRM實例

此代碼在IE,但不以webresource作出FetchXML請求CRM Chrome瀏覽器...爲什麼呢?

$.ajax({ 
     type: "POST", 
     dataType: 'xml', 
     contentType: "text/xml; charset=utf-8", 
     processData: false, 
     url: path, 
     data: fetchRequest, 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader(
       "SOAPAction", 
       "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute" 
      ); //without the SOAPAction header, CRM will return a 500 error 
     } 
    }).done(
     function(data){ 
      $(data).find("a\\:Entity").each(function() { 
      // loop entered in IE but not in chrome 
      } 
     } 
    ); 

編輯

的問題是不是與Ajax調用的問題是與.find()沒有得到從返回的XML節點。

所以要清楚,我得到什麼樣子相同的XML在每個瀏覽器的請求,但這裏find方法

$(data).find('a\\Entity') 

回報鉻沒有項背...它完美的IE瀏覽器。

+0

錯誤檢查控制檯(按f12) – Musa

+0

沒有錯誤 – Peter

回答

3

OK,我想我已經找到了問題

http://bugs.jquery.com/ticket/155

jQuery的發現()有,因爲在不同的瀏覽器的selectSingleNode的不同實現的問題。

這個bug說明它是固定的,但我不認爲它是。

編輯

我發現,做選擇這個樣子的,似乎工作

$(xml).find("a\\:Entity, Entity") 

這是一個黑客位,但它解決了我的具體問題

+1

+1,剛剛碰到這個自己。工作很好。在IE中仍然有效。 – tnw

+1

只是哇這個答案......':)'! – vijayP

2

您很可能需要連接到.fail以查看它是否返回錯誤。你應該能夠將其連接到.done函數的結尾,像

$.ajax({ 
    type: "POST", 
    dataType: 'xml', 
    contentType: "text/xml; charset=utf-8", 
    processData: false, 
    url: path, 
    data: fetchRequest, 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader(
      "SOAPAction", 
      "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute" 
     ); //without the SOAPAction header, CRM will return a 500 error 
    } 
}).done(
    function(data){ 
     $(data).find("a\\:Entity").each(function() { 
     // loop entered in IE but not in chrome 
     } 
    } 
).fail(function(p1, p2, p3){ 
    ... 
}); 

注 - 如果失敗就像古老的「錯誤」功能沒有那麼應該有多個參數,你可以允許失敗功能接受,第二個和第三個給你更詳細的錯誤。

除了捕獲失敗之外,我還記得有關chrome和異步模式的問題,因此您也可以嘗試在dataType標誌之後將async標誌設置爲false。事情是這樣的:

$.ajax({ 
    type: "POST", 
    dataType: 'xml', 
    async: false, 
    .... etc 

唯一的其他問題,我讀過有關鉻是JSONP的問題,但你在這裏使用了XML,這樣顯然是沒有問題的。

+0

沒有問題是沒有與ajax調用問題是與.find()沒有從返回的xml – Peter

+1

然後可能誤讀你的問題。說實話,如果你正在嘗試做這樣的事情,所有通過javascript看看Daniel Cai的優秀工具。他已經包裝了所有這些:http://xrmsvctoolkit.codeplex.com/(或者你也可以在這裏獲取完整版本:http://xrmservicetoolkit.codeplex.com/) –

+0

是的,它措辭不佳。無論如何,你的信息對其他原因很有用,謝謝。 – Peter

相關問題