2

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

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

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

主页上的 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

4 回答 4

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);
     }
}
于 2012-11-20T21:59:07.947 回答
1

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

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

在点击处理程序中,您需要通过返回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;

})
于 2012-11-20T22:09:59.957 回答
0

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

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

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

于 2012-11-20T22:03:04.837 回答
0

statusCode 是数字,对于您的情况,应将其200更改success200

statusCode: {
    200: function (data) {
        $("#total_hidden").html(data.total_hidden);
    }
}
于 2012-11-20T21:59:38.473 回答