簡體   English   中英

jQuery.ajax調用中php的json響應出現問題

[英]trouble with json response from php in jQuery.ajax call

我正在使用$ .ajax從php腳本獲取JSON響應。 如果我從$ .ajax成功函數記錄數據變量,它將輸出格式正確的JSON對象,但是當我嘗試訪問數據變量的屬性時,它是未定義的。 這是被發送回的PHP:

echo json_encode(array("status"=>true, "success"=>"Login Success", "message"=>"You have been logged in successfully."));

這是我的ajax電話:

$.ajax({
        type: "POST",
        data: {
            login: true,
            username: $('#login-username').val(),
            password: $('#login-password').val()
        },
        async: false,
        url: "./php/client-login.php",
        success: function (data) {
            console.log(data.status);
            if (data.status) {
                console.log(data.success);
                displayModal(data.success, data.message, "./js/login-modal-code.js");
            } else if (!data.status) {

                displayModal(data.error, data.message, "./js/login-modal-code.js");
            }
        },
        error: function (jqXHR, status, responseText) {
            console.log(status);
        }
});

如果我將dataType: "json"選項添加到$ .ajax調用中,則會出現解析錯誤,並且如果我嘗試執行$.parseJSON(data); 訪問我得到的數據變量中的數據和意外的令牌錯誤。 我不太確定自己在做什么錯,我以前曾經使用過此設置,但以前一直可以使用,但是由於某種原因,現在還沒有。 有人看到我錯了嗎?

編輯:忘記提及這里是來自php腳本的響應:

{"status":true,"success":"Login Success","message":"You have been logged in successfully."}

編輯2:這是我的控制台的屏幕。 最上面的.length調用是從console.log(data)記錄的json,最下面的是從chrome dev tools網絡選項卡中的響應記錄的php腳本的響應。 他們排列完美,但第二個顯示長度為93,我該如何解決? 控制台映像

我在閱讀jQuery Docs時發現,“ dataType:jsonp”不適用於同步請求,由於您具有async: false ,因此您正在發出這種請求。 打開它可能會解決您的問題。

另外,看看文檔。

祝好運!

所以我想出了一個解決此問題的方法,首先我先對數據執行JSON.stringify,然后對JSON.parse進行數據處理,最后對$ .parseJSON()進行處理,以獲取可使用的javascript對象。 不知道為什么在離開php腳本並到達$ .ajax調用之間添加了2個不可見字符,所以如果有人知道為什么讓我知道

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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