【问题标题】:jquery post not passing all parametersjquery post没有传递所有参数
【发布时间】:2013-09-19 07:11:22
【问题描述】:

我有这个 jquery 代码:

var idd = $(this).attr("id");
var page = $(this).attr("page");

    var data = "lastmsg="+idd+"&page="+page;

    $.ajax({
        type: "POST",
        url: "ajax_more.php",
        data: data,
        success: function(html){
            $("ol#live_updates").append(html);
            $("#more"+idd).remove(); // removing old more button
        }
    });

这是“ajax_more.php”代码:

if(isset($_POST['lastmsg']))
{
    $lastmsg = mysql_real_escape_string($_POST['lastmsg']);
    $page = mysql_real_escape_string($_POST['page']);

        echo $lastmsg . " " . $page;
}

只传递了 ($lastmsg),但没有传递任何其他参数,例如 ($page)。问题出在哪里 ?? 我尝试使用“POST”类型的 ($.post) 和 ($.ajax),但都无法正常工作...

【问题讨论】:

  • 数据 != 查询字符串。在任何情况下,您都可以使用 FireBug 等工具查看 传递的内容,这将有助于在未来隔离类似的问题。
  • 你要明白POS and GET的区别,那么jQuery AJAX的正确使用方法就清楚了

标签: php jquery ajax


【解决方案1】:

data 应该是一个对象。

var data = {lastmsg: idd, page: page};

【讨论】:

  • 您是否收到任何类型的错误消息?检查 /var/log/apache_error_log 和 firebug 控制台。
  • 不,我没有收到任何错误消息。一个变量通过,其他变量不通过。
  • 你传递给page的值是什么?
  • 有两个变量:“lastmsg”和“page”,我想将它们传递给服务器端“ajax_more.php”。但是一个通过了,另一个没有。为什么?
  • 你传递给page的值是什么?
【解决方案2】:

您需要使用 encodeURI 正确编码所有 ajaxed 参数。

查看我的回答here 了解更多信息。另外,请使用浏览器的控制台进行调试。

【讨论】:

  • 你不应该。此答案仅影响 GET 方法。
  • @JoeFrambach 是的,您应该这样做,但是如果您将对象作为数据参数传递,jQuery 会自动为您完成。
猜你喜欢
  • 2011-04-29
  • 2012-10-12
  • 2020-11-20
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多