2011-04-06 43 views
0

我的jQuery/AJAX脚本发布到PHP文件,希望能够返回XML。当我打印数据时,我得到的所有html源代码都返回,并且xml在IE 8或更低版本中没有正确解析。该代码适用于IE 9和所有其他浏览器。如果有人对我的问题有什么建议或解决方案?IE9中的Ajax/jQuery/PHP但IE8或更低版本

的jQuery:

$.post("load-content/", {type: "POST", img: placeholder, dataType: "XML", selection: $(this).html()}, function(xml) { 
       // format and output result 
       // alert(placeholder+' && '+$(this).html()); 
       nshow = $("content", xml).text() ; 
       $("div p.p2").html(
        $("content", xml).text() 
       ); 
       alert("HERE IE 9+ "+xml.length); 
      }); 

PHP:

if(isset($_REQUEST["img"]) && isset($_REQUEST["selection"])) { 
     $xml='<ratings><content>test</content></ratings>'; 
     echo $xml; 

*仅供参考此代码正在运行ZENCART文件夹

回答

0

其实我觉得你的问题是使Ajax调用本身。您正在使用$.post,但您提供的选项散列好像是$.ajax。这两个是不同的...

$.post使用url,数据,回调和响应类型作为参数。你正在提供一个类似于你提供给$.ajax的哈希值作为第二个参数,它不是它想要的。

如果你要使用它$.post shoudl是这样的:

$.post("load-content/", {img: placeholder, selction: whatever}, function(), 'xml'); 

而且它不是obivous您的通话语境中的是什么... this可能不存在,或者除非是在事件处理中jQuery.each迭代,因此使用selection: $(this).html()可能没有意义。


您是否尝试过为您的响应设置正确的标题并立即退出?

if(isset($_REQUEST["img"]) && isset($_REQUEST["selection"])) { 
     header('Content-type: application/xml'); 
     $xml='<ratings><content>test</content></ratings>'; 
     echo $xml; 
     exit(0); 
} 
+0

我认为问题是,头被包含在其他文件,我试图重新启动xml。所以,如果我更改dataType,那么我会得到所有内容,但是我需要从响应中剥离标题,或者从页面中包含标题,然后使用上面的xml标题。 – tiffbrink 2011-04-06 18:18:13

+0

知道如何从PHP文件或AJAX响应中去除标题? – tiffbrink 2011-04-06 18:18:44

+0

最简单的解决方案可能是使用jQuery的'text'数据类型,然后在回调中手动创建一个xml dom ...否则你必须去研究ZenCart文档,看看是否有一种有效的方法来覆盖它想要发送的标题。既然它的ZenCart我怀疑这是否可能,这意味着你需要修改核心文件,这可能不是一个好主意。 – prodigitalson 2011-04-06 18:29:55

1

已解决。
这里有两个问题。

  1. 正如上面的答案建议有问题的标题。
  2. 同样的答案以上建议有一个与数据类型的问题...老年人IE浏览器的代码应该看起来像

    $.post("/load-content/", {type: "POST", img: showcase, menuv: aname}, function(response) { ... 
    
相关问题