簡體   English   中英

Ajax通話不斷失敗,沒有錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM