2012-09-25 92 views
0

我似乎無法讓此對象通過jQuery的ajax到我的PHP文件。通過jQuery ajax發送jQuery構建數組到PHP

$("body").on("submit", ".upload-results-form", function(){ 

     var photosJSON = []; 

$(".upload-result-wrapper .upload-results .photos li").each(function(){ 

    var photoID = $(this).attr("rel"); 
    var description = $(".photo-upload-description", this).val(); 
    var source = $("img", this).attr("src"); 

    photosJSON.push({photoID: photoID, description: description, source: source}); 

}); 

var jsonData = JSON.stringify(photosJSON); 


    $.ajax({ 
    type: "POST", 
    url: "ajax/add/albums/photos_publish.php", 
data: "photosJSON="+jsonData, 
    cache: false, 
    success: function(html){ 
     alert(html);   
    } 
    }); 

}); 

我jsonData看起來是這樣的:

[{"photoID":"47","description":"","source":"photos/50611a8725cca_224.jpg"}, 
{"photoID":"48","description":"","source":"photos/50611a8764881_224.jpg"}, 
{"photoID":"49","description":"","source":"photos/50611a87aa508_224.jpg"}, 
{"photoID":"50","description":"","source":"photos/50611a88dd34b_224.jpg"}] 

和我的PHP文件:

$photosJSON = json_decode($_POST['photosJSON']); 
echo $photosJSON['photoID']; 

但是返回任何內容,則不會出現任何正在通過到PHP發送。

回答

1

必須將JavaScript對象轉換成JSON:

data: {photoDescriptions: JSON.stringify(photoDescriptions)}, 

然後,在你的PHP代碼:

$photoDescriptions = json_decode($_POST['photoDescriptions']); 
+0

哎呀,我剛剛意識到我有一點點的文件目錄,所以不管我有什麼似乎沒有工作 - 因爲它不是!同樣感謝您的幫助 –

+0

實際上,似乎沒有任何內容被髮送到PHP。字符串爲空 –

+0

更新了代碼。通過http傳遞的數據必須進行編碼,如果將數據作爲對象傳遞,jQuery會自動執行該操作,否則必須使用encodeURIComponent來對該字符串進行編碼。 – timidboy

1

首先第一件事情: 「數據」 的AJAX調用的屬性必須是一個對象,就像timidboy說的那樣。

兩個快速完整性檢查:

console.log(photosJSON); 

的。每()結束後的權利,並

var_dump($_POST); 

地方在你的PHP頁面。我懷疑,假設你遵循了timidboy的更正,問題不在你的AJAX中。例如,你確定每個()迭代的標識符實際上是否匹配頁面上的DOM元素?

相關問題