2013-05-26 99 views
0

我得到了一個很奇怪的問題,我認爲這工作之前,但它不再。我什至不記得改變任何事情。我嘗試了一個較老的jQuery庫。jQuery Ajax - 無法解析json?

我得到一個錯誤,說:第68行:http://i.imgur.com/H51wG4G.png :(匿名函數)。其中涉及第68行: var jsondata = $ .parseJSON(data);

這是我的ajax函數 因爲這個錯誤,我無法讓我的警報工作。順便說一下,這個腳本是用於登錄的,所以如果我刷新我的網站,我將會登錄,以便工作。我還會返回我的json對象,就像您在圖像中看到的那樣。 {「success」:false,「msg」:「Fel anv \ u00e4ndarnamn eller l \ u00f6senord。」,「redirect」:「」}

當我得到這個,我會檢查login.success是否成功== true並從login-in.php獲取登錄面板。

$('#login_form').submit(function() 
{ 
    var login = $.ajax(
    { 
     url: '/dev/ajax/trylogin.php', 
     data: $(this).serialize(), 
     type: 'POST', 
    }, 'json'); 
    login.success(function(data) 
    { 
     var jsondata = $.parseJSON(data); 
     console.log(jsondata); 
     if(jsondata.success == true) 
     { 
      $.get("/dev/class/UI/logged-in.php", function(data) { 
       $(".login-form").replaceWith(data); 
      }); 
     } 
     else 
     { 
      alert(jsondata.msg); 
      $('#pwd').val(''); 
     } 
    }); 
    return false; 
}); 

謝謝。

+0

請'解析之前粘貼'data'使用'的console.log(數據)的內容。 –

回答

1

如果您在附加屏幕截圖中顯示的response有問題,那麼您的PHP腳本中存在產生JSON響應的問題。確保生成此響應的PHP腳本(或該文件中包含的任何其他腳本)未使用名爲SITE_TITLE的常量。如果這些PHP文件中的任何一個需要使用該常量,請確保該文件中包含SITE_TILE

可能發生的情況是JSON響應生成中涉及的PHP文件之一可能以某種方式發生了變化,並且開始使用costant而沒有首先定義它,或者沒有包含包含該常量的文件。

或者,也許沒有參與JSON生成的文件都變了,而是你的error_reporting設置可能已經改變,現在當它看到一些不確定的常數PHP解釋器輸出notice水平文本。

解決問題

如果SITE_TITLE常數是不確定的,定義它。 如果在其他某個文件中定義了SITE_TITLE常量,請在生成響應的PHP腳本中包含該文件。

否則,我不建議這樣做,請將您的error_reporting設置設置爲忽略Notice

+0

哇。每個人都很有幫助。你確實是對的,這是恆定的問題。我不知道這會產生如此的影響,因爲這是一個「通知」錯誤。但我現在明白爲什麼。我會將此標記爲正確答案。謝謝大家。 – mpj

+1

好的。很高興幫助。 –

1

您的回覆不是有效的JSON。你會看到:「意外標記<」。

這意味着您的回覆中包含意外的「<」,並且無法將其轉換爲JSON格式。

console.log(data)之前轉換成JSON。

0

您應該使用login.done(),而不是login.success():) 成功僅在ajax()函數中使用!成功對象函數已被棄用,您只能將成功設置爲Ajax()參數!

而且沒有必要解析數據,因爲它已經是Json格式了!

jQuery Ajax

$('#login_form').submit(function() 
{ 
    var login = $.ajax(
    { 
     url: '/dev/ajax/trylogin.php', 
     data: $(this).serialize(), 
     type: 'POST', 
    }, 'json'); 
    login.done(function(data) 
    { 
     var jsondata = data; 
     console.log(jsondata); 
     if(jsondata.success == true) 
     { 
      $.get("/dev/class/UI/logged-in.php", function(data) { 
       $(".login-form").replaceWith(data); 
      }); 
     } 
     else 
     { 
      alert(jsondata.msg); 
      $('#pwd').val(''); 
     } 
    }); 
    return false; 
}); 
+0

謝謝。我將使用登錄完成而不是成功。 Json格式已經?呃不知道是這樣。 – mpj