使用$ .ajax将多个变量传递给php脚本

时间:2012-08-19 09:40:05

标签: php mysql ajax

我有这个脚本:

             var wall_user_id =  "<?php echo $_SESSION['user_id'];?>";

 $.ajax({
            type: "POST",
            url: "insert.php",
            data: "user_id=" + wall_user_id,
            success: function () {
                $('ul#posts').prepend(wall_post);

            }
        });//end success function

将wall_user_id发送到php脚本:

      <?php
      require 'core/functions/init.php';

      $user_id = mysql_real_escape_string($_POST['user_id']);
      $sql = 'INSERT INTO wall (user_id) VALUES('.$user_id.')';
      mysql_query($sql);
      ?>

这样可以正常工作,但如果我尝试添加更多这样的值,则不行:

         var wall_user_id =  "<?php echo $_SESSION['user_id'];?>";
             var wall_userimage = "<?php echo $user_data['imagename']; ?>";

 $.ajax({
            type: "POST",
            url: "insert.php",
            data: "user_id=" + wall_user_id +"userimage="+ wall_userimage,
            success: function () {
                $('ul#posts').prepend(wall_post);

            }
        });//end success function

和insert.php:

 <?php
      require 'core/functions/init.php';

      $user_id = mysql_real_escape_string($_POST['user_id']);
      $userimage = mysql_real_escape_string($_POST['userimage']);

      $sql = 'INSERT INTO wall (user_id, image) VALUES('.$user_id.','.$userimage.')';
      mysql_query($sql);
      ?>

它不会将任何值插入数据库。 我做错了什么?

3 个答案:

答案 0 :(得分:4)

您可以在data

中传递任意数量的值
data: { user_id: wall_user_id, userimage: wall_userimage }

并在您的示例中使用&分隔参数:

data: "user_id=" + wall_user_id + "&userimage=" + wall_userimage

但第一种方法是推荐的方法,因为jQuery负责正确地对值进行url编码。有了你的例子,如果你想要正确地做,你应该写:

data: "user_id=" + encodeURIComponent(wall_user_id) + "&userimage=" + encodeURIComponent(wall_userimage)

这显然是太多的代码。所以使用第一种方法。

答案 1 :(得分:1)

数据查询字符串错误。你忘记了&

data : "user_id=" + wall_user_id +"&userimage="+ wall_userimage

或者您可以使用对象

data : { 'user_id': wall_user_id, 'userimage': wall_userimage }

答案 2 :(得分:0)

无法像这样发送多个变量。您将发布如下的值  数据:“user_id =”+ wall_user_id +“userimage =”+ wall_userimage

这对多个变量不起作用。你可以做类似下面的事情

$ .post(“您需要发布的地址”,{“user_id”:wall_user_id,“userimage”:wall_userimage},函数(响应)     {         ...........     });

data:{“user_id”:wall_user_id,“userimage”:wall_userimage}

数据应作为数组传递