我有一个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;
?>
答案 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');
});
});