AJAX正在改变file_get_contents的内容

时间:2010-07-05 07:37:24

标签: php ajax file-get-contents

我使用AJAX将内容加载到占位符中,PHP代码使用file_get_contents来获取我想要的页面,然后将其返回给AJAX响应,将其放入我的占位符。我遇到的问题是被抓取的内容实际上正在被改变,就像html标签被放置在它们不存在的地方..这是代码:

function getPreview() { 
    var indexe = ajax.length;
    ajax[indexe] = new sack();
    var form = document.getElementById('form');
    ajax[indexe].setVar("prevsub", form.ebay_preview_submit.value);
    ajax[indexe].method = 'POST';
    ajax[indexe].requestFile = "../admin/model/catalog/getEbay.php";
    ajax[indexe].onCompletion = function(){ createPreview(indexe) };
    ajax[indexe].runAJAX();
}

function createPreview(indexe) {    
    var obj = document.getElementById('preview_ph');
    obj.innerHTML = ajax[indexe].response;
}

所以所有内容都放在这个占位符中:
    <div id="preview_ph" ></div>

这是抓取的PHP:

if(isset($_POST['prevsub'])){
$template_viewer = http://localhost:8888/admin/view/template/ebay/template_viewer.php';
$file_got = file_get_contents($template_viewer); 
echo $file_got;
}

这里有一个片段,它应该与它在那里添加的内容相比......

原定于:

Sign up for Newsletter</a> </div></td>

但相反它被改变了:

Sign up for Newsletter</a></td></tr>

另一个,应该是:

bidding! </span>
</div>
</td></tr>

但改为:

bidding! </span>
</div>
</td></tbody>

它改变了内容总共7次从页面抓取...对此有何解释?

该页面在浏览器中完美打开,它在某种程度上被AJAX或file_get_contents严重改变,我完全感到困惑......

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

对我来说,这似乎是浏览器在.innerHTML操作时清理HTML。这是一种自卫行为,因为你输出的HTML显然无效,是吗?

最终结果看起来像

<div id="preview_ph" > 
 Sign up for Newsletter
  </a>          <--- broken 
   </div>       <--- broken
    </td>       <--- broken
 </div>

该代码会破坏DOM,因此浏览器必须尽可能地尝试修复它。

为什么要通过AJAX输出那些结束标记?