3

我正在创建一个 PHP 站点并遇到了以下问题,我希望能够单击页面上的超链接,将小数据项发送到 php 脚本,让脚本执行其功能,然后返回结果。

我在这个网站上使用 AJAX 让每个页面加载到网站的 div 部分,所有页面、数据和响应都加载到这个中央 div 中,如下所示:

<html>
    <body>
        <div id="topMenuBar">
            <div id="contents">
            //ALL DATA IS LOADED HERE...//
            </div>
        </div>
    </body>
</html>

因此,当从顶部菜单中选择一个页面时,我只需运行以下代码:

$('#topMenuBar a').click(function(e)
{
    e.preventDefault();
    $('#contents').load($(this).attr('href'), function()
    {
    });
});

现在页面加载到内容部分,我正在加载一个名为“results.php”的页面,该页面连接到数据库,查询它,并创建一个带有结果的 HTML 表。每个表格行都有一个小的超链接,单击该超链接时,旨在将一个值发送到另一个 PHP 脚本,然后清除内容 div,然后使用来自该脚本 (getInfo.php) 的响应重新填充 div。例如,一行将有以下 PHP 代码生成一个链接:

<label class="moreInfo"><a name="test01" onClick="getInfoFromPHP(<?php echo $data[$id]; ?> )">Get Info</a></label>

所以当PHP生成表格时,点击链接时会传递一个JS函数的值。

我现在需要做的是将值发送到 PHP 脚本,该脚本将再次查询数据库,并将结果插入“内容”div。我一直在尝试以下功能。

function getInfoFromPHP(myVar){
    var netID = myVar;
    $.ajax({
        url: "getInfo.php",
        type: "POST",     
        data: { 
            networkID: netID
        }, 
        success: function(html) {
            $('#contents').empty();
            $('#contents').load(html);
        }      
    });
};

当我调用该函数时,它似乎确实将数据发送到脚本,但我从 firebug 收到以下错误:

POST http://127.0.0.1/private/networks/includes/leave_a_network.php - 200 OK -15ms
GET http://127.0.0.1/%3Ch2%3EHello 403 Forbidden 21ms "NetworkError: 403 Forbidden - http://127.0 .0.1/%3Ch2%3E你好"你好

PHP 脚本仅执行以下操作:

<?php
    session_start();
    $networkID = $_POST['networkID'];
    echo "<h2>Hello World</h2>";
?>

将数据发送到 PHP 脚本并将其加载到 div 中的最佳方法是什么?

感谢您的任何反馈。

4

3 回答 3

9

在成功函数中,放入 $('#contents').html(html); 而不是负载。

于 2012-04-30T17:37:45.200 回答
4
success: function(html) {

正在将 html 作为字符串返回,不需要像您在此处尝试那样再次“加载”-

$('#contents').load(html);

将该行更改为此

$('#contents').html(html);
于 2012-04-30T17:38:09.040 回答
-1

更好的方法是使用 $.ajax 发送请求。在成功回调中,您可以分析结果,然后执行您想要的操作:

http://api.jquery.com/jQuery.ajax/

于 2012-04-30T17:35:11.973 回答