2014-02-15 50 views
0

我是一個完整的初學者與webdev,我試圖將selectedCategories數組發佈到名爲'searchMatthew.php'的PHP文件,但我似乎無法得到它加工。 JS文件也在searchMatthew.php文件中運行。我將不勝感激任何形式的幫助!謝謝。使用AJAX發佈一個數組到PHP(初學者)

PHP:

<?php 
    $searchWord = ""; 
    if(isset($_POST['selectedCategories'])){ 
     echo "SUCCESSFUL"; 
    } 
    if(isset($_POST['companies'])){ 

    } 
    if(isset($_POST['word'])){ 
     $searchWord = $_POST['word']; 
     echo $searchWord; 
    } 


    ?> 

的jQuery:

var selectedCompanies = new Array; 
var selectedCategories = new Array; 

$("input:checkbox.categories").change(function() { 
    selectedCategories = new Array; 
    $('input.categories:checked').each(function() { 
     selectedCategories.push($(this).val()); 
    }); 
    $.ajax({ 
     type: "POST", 
     data: { 
      'selectedCategories': selectedCategories 
     }, 
     url: "searchMatthew.php", 
     success: function() { 
      alert(selectedCategories); 
     } 
    }); 
}); 

回答

0

success的回調函數需要採取的響應參數。 data屬性描述了您通過向PHP發送的數據,以便您有一個字符串(鍵)在$ _POST內引用您的數據。

當PHP返回響應,selectedCategories仍然指向你發送到PHP的數據,而不是數據由PHP返回

jQuery's documentation來自:

成功類型:Function(PlainObject數據,字符串textStatus,jqXHR jqXHR)的函數。如果請求成功被調用。函數 獲得三個參數:從服務器返回的數據, 根據dataType參數格式化;描述 狀態的字符串;和jqXHR(在jQuery 1.4.x,XMLHttpRequest)對象中。

你應該寫你這樣的代碼來代替:

$.ajax({ 
     type: "POST", 
     data: {'selectedCategories':selectedCategories}, 
     url: "searchMatthew.php", 
     success: function(data){ 
     alert(data); 
    } 
}); 
+0

在看到警報(數據)的內容後,我看到成功打印在數據變量內,但不是在PHP頁面本身。 我該怎麼做才能在打開的「searchMatthew.php」內打印「成功」? – user3286528

+0

你確定你瞭解AJAX的目的嗎? AJAX允許瀏覽器向PHP頁面發送請求並檢索響應*,而用戶不必離開其當前頁面。當您執行AJAX請求時,您不應該*看到* PHP頁面。您只需使用PHP腳本將數據返回給客戶端。 –

0

嘗試使用AJAX後快捷$.post(url[,data][,callback])

你還缺少從你的成功回調返回變量。所以改變你的成功回調如下:

$.post('searchMatthew.php', {'selectedCategories': selectedCategories}, function(xData, status){ 
    alert(xData); //should be "SUCCESSFUL" 
});