[英]Ajax Call keeps failing without error
因此,我的ajax調用工作正常,在Web檢查器中旁邊的綠色指示燈亮起,並且看到正確的參數被發送回並且JSON對象被返回。 但是,它會自動轉為ERROR。 我添加了一些錯誤處理,並且已經用盡了主意。
有人看到嗎?
Java腳本
function getMoreOlder(id) {
$.ajax({
url: "getmore.php",
type : "POST",
dataType : "json",
data: {
postid : id,
type: "later",
},
success: function(response){
alert("Success");
for (var i=0; i<json.length; i++) {
// alert("Loop");
}
},
error: function(jqXHR,error, errorThrown){
if(jqXHR.status&&jqXHR.status==400){
alert(jqXHR.responseText);
}else{
alert("Something went wrong");
}
}
});
}
PHP腳本
$id = $_POST['postid'];
$type = $_POST['type'];
if($type == "later") {
$sql = "CALL `sp_BlogPosts_PageByPostID`('" . $id ."')";
$exec = mysqli_query($conn, $sql);
while($fetch = mysqli_fetch_assoc($exec)) {
$obj = array(
"PostID" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['PostID']))),
"Title" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['title']))),
"Content" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['content']))),
"Email" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['email']))),
"Username" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['username']))),
"Created_At" => stripslashes(substr(trim(mysqli_real_escape_string($conn, $fetch['created_at'])), 0 , 10)));
echo json_encode($obj);
}
用法示例
<button onClick="getMoreOlder(1113);"> Load More Posts </button>
回報示例
{"PostID":"1177","Title":"Off track","Content":"Hi This is a Post", "Email":"me@yahoo.com", "Username":"Abc123", "Created_At":"12-2-14"}
關鍵點
在POST中發送正確的變量
POST中返回正確的信息
總是返回錯誤出問題了!
Web檢查器顯示200個POST請求代碼
問題是您不斷回顯json_encode,這將導致無效的json輸出。
例如:
{"PostID":"1177","Title":"Off track"}{"PostID":"1177","Title":"Off track"}
這是無效的json。 因此,將所有數據放入數組/對象中,然后回顯json_encode
$objArr = array();
while($fetch = mysqli_fetch_assoc($exec)) {
$objArr[] = array(
"PostID" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['PostID']))),
"Title" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['title']))),
"Content" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['content']))),
"Email" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['email']))),
"Username" => stripslashes(trim(mysqli_real_escape_string($conn, $fetch['username']))),
"Created_At" => stripslashes(substr(trim(mysqli_real_escape_string($conn, $fetch['created_at'])), 0 , 10))
);
}
echo json_encode($objArr);
或者按照注釋中的建議一次獲取所有數據並回顯
echo json_encode($exec->fetch_all(MYSQLI_ASSOC));
而且您的for循環使用了錯誤的變量
for (var i=0; i<json.length; i++) {
應該
for (var i=0; i<response.length; i++) {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.