我尝试使用jQuery $ .ajax函数将一些数据发布到PHP文件,并返回响应。我过去做过类似的事情,所以我不确定我在哪里滑倒。
我已经连接DONE,FAIL,THEN,并且总是承诺$ .ajax函数,每个函数都有警报,并且没有警报被触发。这是相关的JavaScript。
$.ajax({
url: "processingForm.php",
dataType: "json",
type: "POST",
data: { theFullData: JSON.stringify(postData) },
success: function (obj, textstatus) {
alert("Woo");
},
error: function (err) {
alert("Error");
}
})
.done(function (res) {
alert(res);
})
.fail(function (res) {
alert("fail");
})
.then(function (res) {
alert("then");
})
.always(function () {
alert("complete");
});
在我的PHP文件中,解析了JSON数据,最终将一个字符串插入到数据库中。大约75%的时间将字符串正确写入数据库。我从来没有看到任何写入LOG表的内容,所以这可能是另一篇文章的问题。
$outp = array();
$sql = (string)('INSERT INTO PBP_O (POST_DATA) values ("' . $str . '")');
mysqli_query($conn, $sql);
//ERROR Logging
$err = mysqli_error($conn);
$sql = (string)('INSERT INTO LOG (ERROR) values ("Hi")');
mysqli_query($conn, $sql);
if($err != ""){
mysqli_close($conn);
echo "Sorry";
}
else{
$sql = (string)('INSERT INTO LOG (ERROR) values ("Way down here")');
mysqli_query($conn, $sql);
$result = mysqli_query($conn, "SELECT LAST_INSERT_ID() LID");
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
$outp["LID"] = $row["LID"];
}
} else {
echo "Sorry";
}
}
$sql = (string)('INSERT INTO LOG (ERROR) values ("'.$outp["LID"].'")');
mysqli_query($conn, $sql);
mysqli_close($conn);
echo json_encode($outp);
如果有人知道我做错了什么,我会非常感激。如果代码的任何其他部分有助于查看,请告知我们。我已经验证了发送的JSON已经有效。
修改
$ .post()可能会为我做任何事情,我现在的AJAX不会吗?我不明白为什么会这样,但我再也看不到代码中的错误。
编辑2
我已将我的PHP代码更新为现在的版本(编辑后的部分位于最左侧)。我还在AJAX中添加了SUCCESS和ERROR回调。基本上我只是使用我的LOG表来确保我应该在哪里。该PHP代码中的每个插入都成功插入,包括我回应要被AJAX捕获的数据。我通常会认为它正在运行到最后。
旁注,我使用的是Visual Studio。当我使用IE进行调试时,所有AJAX回调中的警报都不会触发。我切换到Chrome,他们能够被抓住并且开火了。
在Chrome中>网络工具,有两个条目。首先,调用 processing.php ,这是红色的。第二次调用 index.html?yearsGroup1 = 2016& yearsGroup2 = 2016 ... ,然后是GET请求风格的页面上的所有变量[我现在意识到的是只是在SUBMIT之后重新加载页面。
最后,当我在AJAX中检查 err 时 - > ERROR回调,我看到了:
Object {readyState: 0, responseJSON: undefined, status: 0, statusText: "error"}
我不太确定从哪里开始。
答案 0 :(得分:0)
因此无论出于何种原因,当我将代码转移到另一个文件夹时,会出现一条非破坏性警告:
警告:未知 0
此时我把头伸进显示器。 PSA :不要像我这样的白痴,总是检查你的PHP 15额外的错误。
我向所有评论此事的人道歉,因为他浪费你的时间来完全无能。再次感谢大家的帮助。