2011-04-03 57 views
1

我已經所以現在瀏覽了幾個,不能找到適合我的答案JSON對象,反正這裏的JS:無法讀取jQuery的阿賈克斯()請求

jQuery.ajax({ 
    url:'scripts/form.php?'+ 
     'name='+$('#name').val()+ 
     '&comment='+$('#comment').val(), 
    type:'POST', 
    dataType:'json', 
    complete:function(success) { 
     alert(success.responseText); 
     alert(success.name); 
    } 
}); 

這裏的在(總結)腳本是

header('Content-type: application/json'); 
$name = $_GET['name']; 
$comment = $_GET['comment']; 

echo json_encode(array('name'=>$name, 'comment'=>$comment)); 

下面是來自警告框輸出:

  1. { 「名」: 「測試名稱」, 「評論」: 「試評」}
  2. undefined

我試過了一堆不同的東西,但我很茫然。

回答

2

您應該使用success事件而不是complete事件 - 否則,該響應不會自動被解析爲JSON。

jQuery.ajax({ 
    url:'scripts/form.php?'+ 
     'name='+$('#name').val()+ 
     '&comment='+$('#comment').val(), 
    type:'POST', 
    dataType:'json', 
    success:function(data) { 
     alert(data.name); 
    } 
}); 

如果你想使用complete處理程序,則需要能夠使用它作爲一個對象之前,解析與$.parseJSON返回值:既然你不

var response = $.parseJSON(success.responseText); 
+0

不知道爲什麼我打了一天之後才問這個問題。謝謝! – 2011-04-03 14:27:58

+0

我沒有看到在這裏發佈請求的原因 - 無論如何都是URL參數中的數據。 – 2011-04-03 14:30:47

+0

@MattBall:OP的要求,OP的代碼。 – Jon 2011-04-03 14:31:39

1

使用$.getJSON()需要充分的靈活性$.ajax()

$.getJSON('scripts/form.php', 
{ 
    name: $('#name').val(), 
    comment: $('#comment').val() 
}, function (data) 
{ 
    alert(data.name); 
});