2013-04-02 23 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

相关问题