2012-08-26 28 views
0

我的JS:Ajax調用保持返回null

$('#select').change(function() { 
    var name = $(this).val(); 
    $.ajax({ 
     type: "POST", 
     url: "data/grab.php", 
     data: { type: "hops", name: name }, 
     dataType: "json", 
     success: function(data) { 
        alert(data); 
      var aa = data['aa']; 
      $('#hops-aa').val(aa); 
     } 
    }); 
}); 

grab.php

<?php 

$type = $_POST['type']; 
$name = $_POST['name']; 

if ($type == 'hops') { 
    $result = $name; 
} 

$result = json_encode($result); 
return $result; 

我在Ajax調用添加alert()仔細檢查什麼,我從劇本找回,並它始終爲空。我錯過了什麼?

回答

3

你需要真正echoprint$result。在使用return的PHP中,文件範圍不會將返回的值發送到輸出流。

+0

啊,謝謝。忘了這個。 – n0pe

2

您使用echo打印出來的結果在PHP中,沒有return

echo $result; 
1

(如前述答案所述) 您需要echo/print $ result變量。

<?php 

$type = $_POST['type']; 
$name = $_POST['name']; 

if ($type == 'hops') { 
    $result = $name; 
} 

$result = json_encode($result); 
echo $result; // return $result; 
?> 
+0

不是這樣,特別是當使用特殊的輸出格式而不是在模板文件的上下文中時,你不應該使用PHP結束標籤'?>' –

+0

爲什麼?是嗎?>輸出換行符?原諒我的無知 - 我已經離開了PHP遊戲一段時間了。 – emurano

+2

基本上,是的。這是避免任何數據被傳遞給輸出緩衝區的最佳做法,而這些輸出緩衝區並不是由程序員明確發送的。這在模板中是非常正常的(出於顯而易見的原因),但在「純代碼」文件中,他們現在非常沮喪。乾杯! –