2011-02-11 91 views
7

我有這個函數從列表中獲取服務器ID。該函數總是返回「parsererror」。我查看了返回的JSON數據,但我似乎無法使它工作,因爲jQuery已在v1.5中重寫了ajax。jQuery.ajax()v1.5爲json數據返回「parsererror」

function server_id() 
{ 
    $.ajax({ 
     type: "GET", 
     url: "http://localhost/server_list.php", 
     dataType: "json", 
     success: function(data, status) { 
      alert(status + "\n\n" + data.server_id); 
     }, 
     complete: function(data, status){ 
        alert(status); 
     } 
    }); 

} 

server_list.php

header('Content-type: application/json'); 

    $output['server_id'] = '123'; 
    print json_encode($output); 

螢火蟲網>> XHR它把它讀成JSON,因爲它帶來了選項卡和響應選項卡顯示下面是什麼。

{"server_id":"123"} 

我也嘗試設置內容類型標題,如下所示,但沒有運氣。

Content-type: application/json 

修訂

我只得到 「parsererror」 如果驗證插件從http://bassistance.de/jquery-plugins/jquery-plugin-validationdocs.jquery.com/Plugins/Validation V1.7加載。

如果添加插件,jquery會自動將jsonp回調添加到查詢字符串中,即使設置爲false或不包含jsonp的parms。非常奇怪

有關如何解決的任何想法?

感謝

+0

請發佈生成此輸出的代碼片段 – 2011-02-11 12:49:21

+0

@pinusnegra編輯過的帖子以顯示輸出。不要看到dif,因爲你可以看到顯示其JSON的螢火蟲輸出 – ClaireTaylor 2011-02-11 13:03:13

+0

爲什麼會有jsonpCallback?這應該是一個AJAX請求或JSONP? – 2011-02-11 13:03:19

回答

0

你似乎要定期JSON通信(dataType是 「JSON」,而不是 「JSONP」 和server_list.php發送JSON),但你設置jsonp選項。刪除jsonpjsonpcallback行。將jsonp設置爲false並不意味着您將其禁用!

當這兩行被註釋掉時,everything seems to work fine

2

這裏的簡單解決方案似乎是jQuery 1.5與驗證插件的1.7不兼容。降級到jQuery 1.4.x(或者按照philhag的建議修補或刪除驗證插件代碼)解決了這個問題。

非常感謝這位線索誰確定了衝突。它爲我節省了一大堆不得不調試jQuery代碼的麻煩。

0

在找到這個線程之前,我經歷了好幾天,感謝那些指出jQuery.validate爲罪魁禍首的人。

在我的測試中,它實際上似乎是引起問題的jquery.validate-vsdoc.js,而不是插件本身,以防其他任何人使用。