1

我正在使用 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 以某种方式严重改变,我完全感到困惑......

谢谢你的帮助!

4

1 回答 1

1

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

最终结果看起来像

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

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

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

于 2010-07-05T07:40:08.900 回答