1

我试图通过 ajax 将一些值发布到 php 然后 php print 发回 js console.log,有问题:

构建数组(我怀疑下面我制作的是数组??)

$('.eachcontainer').each(function(){
        var arr = $(this).find('img').map(function(){
            return $(this).attr('src');
        });
        console.log(arr);
        // result:
        // ["16.png", "17.png", "19.png", "18.png"]
        // ["0.png"]
        // ["0.png"]
        // []
        // []
        $.ajax({
            type: "POST", url: "update.php",
            data: arr
        }).done(function(msg){
            console.log(msg);
        });
});

php

print_r($_POST);

js回来console.log

Array
(
    [undefined] => 
)
Array
(
)
Array
(
)
Array
(
    [undefined] => 
)

为什么这不起作用?我该如何解决?

另外,我尝试更改我的 ajax 函数中的语法, data: {arr: arr}但这也不起作用。
错误消息:
TypeError: Type error jquery-1.10.1.min.js:6
在 jquery-1.10.1.min.js:6 中找到错误行:
t = x.isFunction(t) ? t() : null == t ? "" : t, i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)

4

2 回答 2

1

您还没有使用您的数据构建正确的键值对,如果您想传递原始数据流然后设置processData: false和捕获php://input

 var arr = $(this).find('img').map(function(){
            return $(this).attr('src');
        });
        $.ajax({
            type: "POST", url: "update.php",
            data: arr,
            processData: false,
        }).done(function(msg){
            console.log(msg);
        });

在php方面

$data = file_get_contents("php://input");
于 2013-07-26T07:58:22.827 回答
0

您首先需要调用arr.get()以将jquery.map结果作为常规 javascript 数组返回。然后您可以将其传递给 ajax 数据参数,如下所示:

data: { "images" : arr.get() }

所以完整的 ajax 调用看起来像这样:

$.ajax({
    type: "POST", url: "update.php",
    data: { "images" : arr.get() }
}).done(function(msg){
    console.log(msg);
});

然后,您可以在 php 中读取数组,如下所示:

$images = $_POST['images'];
于 2013-07-26T08:08:00.910 回答