AJAX调用成功但在$ _POST ['sample']中抛出未定义的索引错误

时间:2013-12-16 06:07:27

标签: php jquery ajax

我有一个AJAX调用,将数据传递到另一个php文件createTest2.php,如下所示。

但是createTest2.php文件会抛出错误

Notice: Undefined index: sample in C:\xampp\htdocs\TestProj\Test\createTest2.php on line 2

caller.php

 $(document).ready(function(){
 $("#button_submit").click(function() 
 {

  $.ajax({
  type:"POST",
  url:"createTest2.php",
  data:{sample : "test"},
  success:function()
  {
    alert("success");
  }
});
});
});

createTest2.php

  <?php
       $test_name = $_POST['sample'];
       echo $test_name; 
?>

1 个答案:

答案 0 :(得分:2)

这里黑暗的总刺,但我猜你有类似的东西

<form action="createTest2.php">
    <!-- some elements here -->
    <input type="submit" id="button_submit">
</form>

在这种情况下,您应该阻止按钮上的默认操作,例如

$("#button_submit").on('click', function(e) {
    e.preventDefault();

    // and the rest of your ajax code
});

您的表单的默认方法是 GET 并且正常提交,因此$_POST未填充。

理想情况下,您绝不应盲目接受用户输入。我将从PHP文件中的一些检查开始

if (!isset($_POST['sample'])) {
    http_response_code(406);
    throw new Exception('sample data not submitted via POST');
}
$test_name = $_POST['sample'];

其次,在表单提交按钮上捕获点击事件充满了问题。首先,提交表单的方法不止一种。您应该抓住表单的 submit 事件,例如

<form id="myForm" action="createTest2.php">
    <!-- etc -->
    <button type="submit">Go</button>
</form>

和JS

$('#myForm').on('submit', function(e) {
    e.preventDefault();

    $.post(this.action, { sample: 'test' }).done(function(data) {
        alert('Success');
    });
});