2010-06-30 38 views
0

看看這個功能,請jQuery的JSON問題

$(".menu_tree img.edit").click(function() 
    { 
     id = this.id; 
     lang = '<?=$lang_id?>'; 
     var body_width = $("body").width(); 
     var body_height = $("body").height(); 
     $("#shadow").width(body_width); 
     $("#shadow").height(body_height); 
     $("#shadow").show(); 

     var width = $("#edit_title").width(); 
     var height = $("#edit_title").height(); 
     $("#edit_title").height(0); 
     $("#edit_title").width(0); 
     $("#edit_title").animate(
     { 
      width: width, 
      height: height 
     },600); 
     $.post 
     (
      "get_title.php", 
      {id: id, lang: lang}, 
      function(data) 
      { 
       alert("qqq"); 
      }, 
      "json" 
     ); 
    }); 

get_title.php我產生JSON對象,像{name:"name",val:"value"} 它工作正常,如果我不寫了"json",但"json"它甚至沒有提醒我的qqq :(

任何想法?

感謝

+0

如果在解析json響應時出現問題,可能會發生此問題。檢查你的回覆是否作爲有效的json或不... – 2010-06-30 18:44:05

+0

我已經檢查了allready,它出現在'{name:「name」,val:「value」}格式。 但即使它出現在格式錯誤,我認爲它必須警惕? – Simon 2010-06-30 18:45:15

+0

它期望一個json對象被返回,如果它不是json,當你明確聲明它應該是json時,它不會觸發。人們願意/試圖幫助你,但需要更多的信息來做到這一點。 – 2010-06-30 19:14:47

回答

3

1.4.2解析器比早期版本更嚴格。正如michal所指出的那樣,該json無效,因爲屬性名稱不是雙引號。我最近在將網站升級到jQuery 1.4.2時遇到了這個問題。

我強烈建議允許PHP爲您處理json編碼。我懷疑自己的問題也是你自己的問題,那就是我在PHP中手動放置json字符串,而jQuery拒絕它,因爲有些是單引號的。

所以,對於PHP,而不是像

echo "{name:'$val',val:'$val'}"; 
exit; 

讓PHP做編碼:

header('Content-type: application/json'); 
echo json_encode(array('name'=>$val,'val'=>$val)); 
exit; 

還增加了對JSON一個Content-Type頭不能,如果你傷AREN已經沒有了。

3

{name: "name", val: "value" }無效JSON。鑰匙也必須是字符串。

{"name": "name", "val": "value"}