2016-03-08 51 views
0

我想通過JSON來處理PHP和後面的例子,但無法弄清楚爲什麼我無法獲得設置dataType爲json時發生的成功響應。任何幫助,我需要做什麼,在哪裏可以找到一個很好的教程將不勝感激。謝謝!從PHP與JSON請求沒有反應

var selected = $('#getID').val(); 
$.ajax({ 
    url: 'includes/ajaxCalls.php', 
    type: "POST", 
    data: {action: 'test', id: selected}, 
    dataType: 'json', 
    success: function (results) { 
     alert("completed"); 
    }, 
    fail: function (data) { 
     console.log('Could not get posts, server response'); 
    } 
}); 

PHP

if (isset($_POST['action']) && !empty($_POST['action'])) { 
    $action = json_decode($_POST['action']); 
    switch ($action) { 
    case 'test' : test(); 
     break; 
    case 'blah' : blah(); 
     break; 
    default: 
     echo "hello"; 
    } 
} 
    function test() { 
    header("Content-Type: application/json", true); 
    $array = array(0,1,2,3); 
    echo json_encode($array); 
} 
+0

什麼是當前的響應,你得到?請嘗試記錄來自服務器的響應(php文件) –

+0

@tai你不應該在這個$ action = json_decode($ _ POST ['action']);'line'中使用'json_decode'。因爲AJAX請求是作爲數組本身取出的,所以'$ _POST ['action']'將解決你的目的。 由於這個原因,你的'default:'在沒有提供JSON的switch中被執行。 –

回答

2

你需要修復你的PHP代碼中有些事情,

1)你不必呼籲$_POST['action'] json_decode ,你在action變量中有一個字符串,所以你可以直接調用$ _POST ['action'],不必將它傳遞給json_decode。 json_decode用於數據是JSON字符串,然後轉換爲PHP中的數組。

2)不要在你的test()中設置標題,你已經從你的AJAX調用請求了JSON數據,並且從你的服務器請求了PHP,所以你不需要顯式地設置JSON標題在這裏。

變化$action = json_decode($_POST['action']); TO $action = $_POST['action'];

1

變化$action = json_decode($_POST['action']);$action = $_POST['action'];