通过ajax无法正常向php脚本发送隐藏的输入

时间:2012-11-20 21:55:40

标签: php javascript jquery ajax json

我试图让我的ajax / json脚本工作,我已经查看了stackoverflow,但找不到任何看起来会有所帮助的东西。基本上我所要做的就是当用户点击提交按钮时,隐藏的输入值将通过ajax发送到另一个php脚本,在那里它将被更改等等...然后通过ajax发回并显示在内部通过回应,我不知道我做错了什么。

目前我什么都没有,没有输出或任何东西。

我将尽力在下面给出的代码中尽可能彻底,感谢所有的帮助。

主页上的AJAX脚本

<script>
$(document).ready(function () {
  $(".add_detail_land_down").click(function () {
    var hidden_count = $('input[name=addon_detail_hidden_count]').val();
    $.ajax({
      type: "GET",
      url: "ajax_script.php",
      data: {
        hidden_count: hidden_count
      },
      dataType: "json",
      statusCode: {
        success: function (data) {
          $("#total_hidden").html(data.total_hidden);
        }
      }
    });
  })
});
$(".add_detail_land_down").click();
</script>

主页上的表单头(我想也可以添加它,只是加入)

<form action="" method="post">

主页上的隐藏输入

<input type="hidden" name="addon_detail_hidden_count" id="addon_detail_hidden_count" class="addon_detail_hidden_count" value="1" />

用于在主页

上启动ajax进程的提交按钮
<input name="add_detail_land_down" type="submit" class="add_detail_land_down" value="add_detail_down"/>

ajax_script.php中的代码

    <?php 

$hidden_count = $_GET["hidden_count"];

$hidden_count = $hidden_count + 1;
include 'connect_to_mysql.php';

echo json_encode(array("total_hidden" => $hidden_count ));

 ?>

感谢您提供的任何帮助

4 个答案:

答案 0 :(得分:3)

为什么要将success callback嵌套在 statusCode

原来是

dataType: "json",
success: function (data) {
    $("#total_hidden").html(data.total_hidden);
}

使用状态代码 200 代替成功

dataType: "json",
statusCode: {
     200 : function (data) {
          $("#total_hidden").html(data.total_hidden);
     }
}

答案 1 :(得分:1)

在提到的所有其他问题中:statusCode/success语法问题,以及document.ready的点击trigegr outlsde,您还需要阻止浏览器默认提交表单。

目前,当您提交正常的浏览器行为时,您的网页可能会刷新。

在点击处理程序中,您需要通过返回false或使用preventDefault()

来阻止此操作
$(".add_detail_land_down").click(function (event) {

   /* use either of these */

   /* before your ajax code */
    event.preventDefault();

    /* or after your ajax code*/

     return false;

})

答案 2 :(得分:0)

statusCode是数字,对于您的情况,200应该从success更改为200,如下所示:

statusCode: {
    200: function (data) {
        $("#total_hidden").html(data.total_hidden);
    }
}

答案 3 :(得分:0)

你的成功回调应该像这样指定(如果你只关心200):

success: function (data) {
    $("#total_hidden").html(data.total_hidden);
}

此外,您尝试在元素上执行click()的位置可能实际上在文档加载之前发生,因此在onclick处理程序准备好之前执行。如果要在文档准备就绪时自动触发,则应在onclick之后准备好文档。