我使用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严重改变,我完全感到困惑......
感谢您的帮助!
答案 0 :(得分:1)
对我来说,这似乎是浏览器在.innerHTML
操作时清理HTML。这是一种自卫行为,因为你输出的HTML显然无效,是吗?
最终结果看起来像
<div id="preview_ph" >
Sign up for Newsletter
</a> <--- broken
</div> <--- broken
</td> <--- broken
</div>
该代码会破坏DOM,因此浏览器必须尽可能地尝试修复它。
为什么要通过AJAX输出那些结束标记?