2016-08-30 123 views
0

我試圖在單擊按鈕時發送警告的關聯數組。它會傳遞id和警告類型,並觸發collect函數,將它們作爲鍵值對存儲到數組中。然後我想將它發送到另一個頁面。問題是如果它是簡單的數組,它會在我調用$ _POST ['warn']時工作。但如果我將它更改爲關聯數組,我會收到錯誤消息,說警告沒有定義。這是我的JS代碼:通過ajax發送關聯數組

var warnings = []; 
function collect(id,type){ warnings [id] = type;} 
$('#but1').click (function(){ 
    $.post ("url", {warn: warnings}function(r){alert (r);}); 
}); 

有沒有辦法使用AJAX關聯數組作爲鍵值對發送到我的PHP頁面,並獲得使用$_POST數組?

+1

你可以使用JSON.stringify(警告),然後解析你的PHP頁面上的JSON – spaniol6

+0

你正在使用jQuery,所以你已經在做,數據將被解析爲www-urlencoded,你只需要訪問PHP中的正確密鑰 – adeneo

+0

您在'$ .post'調用中錯過了數據和回調函數之間的逗號,但這會導致其他問題,所以我猜這是一個錯字。 –

回答

0

你的警告可能會建造像這樣用JavaScript:

var warnings = { 

    warning1: { 
     id: 1, 
     type: 'info' 
    }, 

    warning2: { 
     id: 2, 
     type: 'danger' 
    } 

} 

然後發送warnings對象作爲JSON服務器在PHP。你可以解析它像這樣:

$json = json_decode(filter_input(INPUT_POST, 'warnings')); 

確保warnings對應於你的Ajax調用數據。