使用AJAX更改PHP函数参数

时间:2014-02-16 05:34:12

标签: php jquery ajax

我正在尝试动态更新PHP函数中的信息。我在我的页面上使用PHP函数:

main();

main()的工作方式如下:

function main() {
    global $news;
    $news = api($news);
}

当有人点击菜单上的其他“新闻”主题时,我想用AJAX刷新main()以反映新的新闻类别请求。把我的大脑和堆叠架起来,我不确定滑倒的位置。 AJAX请求源自此列表:

<div class="mainleft">
    <ul>
        <li>World News</li>
        <li>Sports</li>
    </ul>
</div>

我的JS看起来如下(在最后添加警报以尝试和调试变量):

$(document).ready(function() {
    $(".mainleft > ul > li").click(function(){
        $.ajax({
            type: "POST",
            url: "/includes/ajax.php",
            data: $(this).text(),
            success: function(msg){
                alert($(this).text());  // this alert fires but the result is blank
            }
        });
    });
});

ajax.php看起来像:

if ($_POST) {
$news = $_POST;
}

我尝试过GET的结果相同,所以这是我做错的根本原因。

更新#1:

有人建议修复然后删除回复,但另一位成员在评论中提出了同样的修复。该修复程序不起作用,但他们澄清说我需要一个键/值对POST,它将我的javascript更改为:

data: { news: $(this).text() },

然后我的ajax.php:

if (isset($_POST['news'])) {
$news = $_POST['news'];
}

更新#2:

感谢@Sean我明白我正在不正确地显示调试警报,将以下内容添加到更正的javascript中,现在警告正确的列表项:

context: this

但是PHP函数仍然没有更新。

1 个答案:

答案 0 :(得分:0)

$(this)内的alert($(this).text()); $.ajax超出了范围。您可以在ajax调用之前保存到var,并引用var -

$(".mainleft > ul > li").click(function(){
    var liText = $(this).text();
    $.ajax({
        type: "POST",
        url: "/includes/ajax.php",
        data: liText,
        success: function(msg){
            alert(liText); 
        }
    });
});

或使用context ajax选项 -

$(".mainleft > ul > li").click(function(){
    $.ajax({
        type: "POST",
        url: "/includes/ajax.php",
        context: this,
        data: $(this).text(),
        success: function(msg){
            alert($(this).text());
        }
    });
});

注意:正如@Mark B所提到的,你的数据应该有一个密钥才能在php中访问 -

$(".mainleft > ul > li").click(function(){
    $.ajax({
        type: "POST",
        url: "/includes/ajax.php",
        context: this,
        data: {key: $(this).text()},
        success: function(msg){
            alert($(this).text()); 
        }
    });
});

参考:https://stackoverflow.com/a/1570160/689579 https://stackoverflow.com/a/8070183/689579 jsFiddle:http://jsfiddle.net/h2FLg/(将$(this)保存到var,context:和超出范围的示例)