0

このオブジェクトを jQuery の ajax 経由で 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 に何かが送信されているようには見えません。

4

2 に答える 2

1

まず最初に:timidboyが言ったように、AJAX呼び出しの「データ」属性はオブジェクトである必要があります。

2つの迅速な健全性チェック:

console.log(photosJSON);

.each()の終了直後、および

var_dump($_POST);

PHPページのどこかにあります。あなたが臆病者の訂正に従ったと仮定すると、問題はあなたのAJAXにはないのではないかと思います。たとえば、each()によって繰り返される識別子が実際にページ上のDOM要素と一致することを確認しますか?

于 2012-10-31T10:11:40.420 に答える
1

JavaScript オブジェクトを JSON に変換する必要があります。

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

次に、PHP コードで次のようにします。

$photoDescriptions = json_decode($_POST['photoDescriptions']);
于 2012-09-25T04:38:37.383 に答える