2013-09-23 58 views
0

因此,我正在學習Ajax,並且我遵循本教程:https://phpacademy.org/course/submitting-a-form-with-ajax來創建適用於任何形式的函數。這是完整的功能:Ajax,在javascript中處理php響應

$('form.ajax').on('submit', function() { 
    var that = $(this), 
     url = that.attr('action'), 
     type = that.attr('method'), 
     data = {}; 

    that.find('[name]').each(function(index, value) { 
     var that = $(this), 
      name = that.attr('name'), 
      value = that.val(); 

     data[name] = value; 
    }); 

    $.ajax({ 
     url: url, 
     type: type, 
     data: data, 
     success: function(response) { 
      alert(url + ' ' + response); 
     } 
    }) 
    return false; 
}); 

正如你看到我做的是提醒響應,在這種情況下是php echo。這就是我的問題開始的地方,我需要一個靈活而安全的方式來處理javascript/php通信。對於所有形式,最好使用一種函數,可能用if()聲明而不是alert(url + ' ' + response);,具體取決於url的格式。

我需要的功能並不是非常複雜,根據我得到的響應,我只會更新當前的錯誤形式。

只要我知道在通信中使用什麼,我很好,echo '1';因爲我現在不喜歡理想的解決方案,但它是我能處理的。

那麼,我應該從PHP頁面發送什麼類型的響應,以及在哪裏(在JavaScript中)以及如何處理它?我聽說過json,但很難將它包裹在頭上。有人可以顯示一個json響應發送一個基本的整數,這很容易我的反應拿起作爲一個int?

+0

簡單的JSON響應'{響應:1} ' - 作爲'response.response'訪問(我通常在成功回調中使用'data'作爲我的參數名稱,但這都是首選項) – tymeJV

+0

我試着讓它工作,但我只是回到undefined。在php中,我做了if(){response:1}'用分號嘗試了所有我能想到的,並且在js中我做了'success:function(response){ \t \t \t alert(url + '+ response.response); \t \t}' – justanotherhobbyist

+0

您必須在PHP端對'json_encode'數據進行編碼。 (假設你的類型是'json' – tymeJV

回答

2

您可以通過PHP發回一個簡單的JSON響應,並在您的success回調中檢查它。確保您設置typejson和你的AJAX調用,並在PHP端使用json_encode

$response = array('response' => 1); 
echo json_encode($response); 

輸出應該是:

{ 'response' : 1 } 
+1

不要忘了,'header('Content-type:application/json');' – Izkata

+0

作品完美,謝謝你們。 – justanotherhobbyist