PHP/AJAX:似乎无法将AJAX结果显示到DIV中,但可以在ALERT()中工作


PHP/AJAX: Can't seem to be able to display ajax result into DIV, but works in ALERT()

我目前正在通过一个真正的网站项目学习PHP,并希望使用Ajax调用来改变网站的部分。

代码示例

myproject.js

$(document).ready(function() {
    $("#inventory").click(function() {
        $.ajaxSetup({
            url: "sectionhandler.php?section='inventory'",
            type: "get",
            dataType: "html"
        });
        $.ajax().done(function(html) { 
            alert(html); // This works!
            $("#section").html(html); // This doesn't work.
            $("#section").append(html); // This neither.
        });
    });
});

inventory.html

<table><tr><td>Hello world with AJAX!</td></tr></table>

sectionhandler.php

<?php echo file_get_contents( 'inventory.html' ); ?>

menu.html

<a id="inventory" href="">Inventory</a>

index . php

<div id="menu" class="content"><?php echo file_get_contents( 'menu.html' ); ?></div>
<div id="section" class="content"></div>

相关文章发现、阅读和尝试

  1. XMLHttpRequest不能在IE 7/8中工作,但可以在其他浏览器中工作
  2. jQuery.ajax ()
  3. jQuery.ajaxSetup ()
  4. .append ()
  5. jquery .html() vs .append()
  6. 不能使用jQuery将HTML代码附加到一个div中
  7. 为Div添加Html效果
  8. 使用append()将text/html添加到jQuery元素中

还有很多很多…

结果

当我点击menu.html中包含并通过index.php显示的Inventory链接时,jQuery代码执行得很好。我从服务器获得结果,同时在alert()中显示inventory.html的正确内容。

然而,当我将innerHTML设置为<div id="section" class="content"></div>时,我似乎无法获得预期的结果。页面的背景似乎闪烁,虽然不应该按照Ajax定义,我的XMLHttpRequest.responseText的内容从未显示。

我更接近它的工作是当我双击Inventory链接时,这样在页面背景的第一个"flash"之后,它显示了我的部分的内容。

我已经尝试了多种方法使用经典的Javascript与onclick元素在我的<a>标签,我已经尝试了document.getElementById("section"),虽然得到正确的元素,我无法在页面上显示我的内容。

欢迎任何想法!

提前感谢!div =)

无论如何,您都需要阻止浏览器的默认行为:

$("#inventory").click(function(event) {
    event.preventDefault();
    ...
});

注意,event参数被添加到click处理程序中。

顺便说一下,你的HTML响应是无效的- <table>应该包含一个<tbody>元素包装任何<tr> s。

按要求。一个更简单的解决方案

$("#section").load("sectionhandler.php?section=inventory");

jQuery .load ()