2011-05-12 103 views
1

我試圖通過jQuery .ajax()發送一段數據到PHP腳本,然後將其加載到div容器中。然後PHP腳本將運行這段數據,其內容將返回到上述div容器中。通過.ajax()將數據傳遞給PHP腳本的正確方法是什麼?

最初,我寫了一段代碼(如下所示),它在單擊時成功添加了正確的元素,但無法正確命名它們,因爲它沒有將count_bucket變量傳遞給PHP。

var count_bucket = 4; 
    var loadPHP = "create_new_bucket.php"; 
    $(".add_bucket").click(function(){ 
     count_bucket++; 
     $("#tree_container2").append($('<div id="bunch' + count_bucket + '">').load(loadPHP)); 
     return false; 
    }); 

然後,我試圖將count_bucket變量傳遞給PHP腳本,將代碼更改爲此(如下所示)。

var count_bucket = 4; 
$(".add_bucket").click(function() { 
    count_bucket++; 
    var bucket_add = $.ajax ({ 
     type: "GET", 
     url: "create_new_bucket.php", 
     data: var count_bucket, 
     dataType: "json", 
     async: false, 
    }).responseText; 
    $('#tree_container2').append($('<div id="bunch' + count_bucket + '">').load(bucket_add)); 
}); 

的PHP文件create_new_bucket.php看起來是這樣的:

<?php 
    include_once "test_functions.php"; // include functions page 
    $i = $_GET["count_bucket"]; 
    drawBunchNew($i); 
?> 

我不清楚其中阿賈克斯的方面()不正確。我懷疑我沒有在PHP中正確收集變量,或者我使用不正確的語法將它傳遞給PHP文件。如果有人能幫助我識別錯誤,我將不勝感激。

*UPDATE* ** * **

感謝TEJS & Tandu。我很清楚如何構建數據,但我仍然無法使jQuery的全部工作。我採用了Tandu的建議來使用.load(),並將我的PHP更改爲使用POST來提取數據,但仍無法正常工作。

var count_bucket = 4; 
$(".add_bucket").click(function() { 
    count_bucket++; 
    var bucket_add = $.load ("create_new_bucket.php", {count_bucket: count_bucket}, }).responseText; 
    $('#tree_container2').append($('<div id="bunch' + count_bucket + '">').load(bucket_add)); 
}); 

而且PHP是:

我用
<?php 
include_once "test_functions.php"; // include functions page 
$i = $_POST["count_bucket"]; 
drawBunchNew($i); 
?> 

最後工作的jquery(最終PHP是與上述相同):

var count_bucket = 4; 
    var loadPHP = "create_new_bucket.php"; 
    $(".add_bucket").click(function(){ 
    count_bucket++; 
    $("#tree_container2").append($('<div id="bunch' + count_bucket + '">').load(loadPHP, {count_bucket: count_bucket})); 
    return false; 
    }); 
+0

哪個版本的jQuery?我很好奇,因爲ajax在1.5版本中進行了重大改寫。這裏可能不會影響你。 – 2011-05-12 04:34:04

回答

1

Ajax請求的數據屬性是要成爲一個客體;認爲它像JSON:

{ data: var response } 

是無效的JSON。然而,你可以做這樣的事情:

data: { myKey: 'myValue', myKey2: 'myValue2' } 

或者在您的情況:

data: { count_bucket: 4 } 

它將包含在數據屬性的數據發送到服務器,該名稱值集的一部分。

0

jQuery中的ajax數據需要作爲查詢字符串格式的字符串('key[]=value&key[]=value&key[]=value')或作爲json對象({key: [value, value, value]})傳遞。我相信你在那裏的var會有語法錯誤。您還需要指定密鑰,因此可以使用data: {count_bucket: count_bucket}data: 'count_bucket=' + count_bucket

請注意,沒有必要使用.ajax()。使用​​,.post().get()通常會更好一些。在你的情況下,​​應該正常工作。傳遞數據作爲第二個參數。

爲什麼你不希望請求是異步的?請注意,dataType是返回值的數據類型,而不是您發送的內容。你是否收到json? jQuery通常也可以正確地猜出這個,如果你在PHP端設置標題,它會有很大的幫助。 GET類型也是默認值。

最後說明:當使用​​時,如果您將數據作爲字符串傳遞,它將使用GET,但如果將它作爲對象傳遞,則使用POST。

+0

謝謝Tejs&Tandu。我很清楚如何構建數據,但我仍然無法使jQuery的全部工作。我採用了Tandu的建議來使用.load(),並將我的PHP更改爲使用POST來提取數據,但仍無法正常工作。我現在的代碼是: – 2011-05-12 14:52:11

+0

我已經發布了新代碼的更新,我上面有 – 2011-05-12 15:01:27

+0

只是想通了。發佈上面的最終工作代碼。謝謝您的幫助。 – 2011-05-12 15:20:32

相關問題