帮助AJAX请求

时间:2010-04-14 15:09:19

标签: php javascript ajax jquery-ui jquery

问题
我想要对PHP脚本执行ajax请求,但是我在将数据转换为PHP期望的格式时遇到问题,PHP期望数据作为数组内的数组进入,例如,< / p>

Array
(
    [cv_file] => Array
        (
            [849649717] => Y
            [849649810] => Y
        )

    [save] => Save CVs
)

我尝试了什么?

我已经尝试在我的javascript中创建一个空数组并将其用作数组键,就像这样,

    var cv_file = new Array();
$(".drag_check").draggable({helper:"clone", opacity:"0.5"});
$(".searchPage").droppable({
    accept:".drag_check",
    hoverClass: "dropHover",
    drop: function(ev, ui) {
        var droppedItem = ui.draggable.children();
        cv_file = ui.draggable.children().attr('name');
        var link = ui.draggable.children().attr('name').substr(ui.draggable.children().attr('name').indexOf("[")+1, ui.draggable.children().attr('name').lastIndexOf("]")-8)
        $.ajax({
            type:"POST", 
            url:"/search",
            data:cv_file+"&save=Save CVs",
            success:function(){
                alert(cv_file)
                $('.shortList').append('<li><input type="checkbox" value="Y" class="checkbox" name="remove_cv['+link+']"/><a href="/cv/'+link+'">'+link+'</a></li>');
            },
            error:function() {
                alert("Somthing has gone wrong");
            }
        });

    }
});

我的问题

如何将数据转换为PHP所期望的格式,我将不胜感激任何人都能给予的帮助?

修改
在警告评论中的海报提示我让他跟随时,

cv_file[849649717]&save=Save CVs

谢谢

3 个答案:

答案 0 :(得分:1)

要在后端PHP文件中的PHP数组中获取结果,您需要创建一个类似于以下的字符串以POST回服务器:

cv_file[]=849649717&cv_file[]=849649810&save=Save CVs

我认为你不能使用这种方法创建一个关联数组,但上面应该给你一个像$_POST中的以下数组:

Array
(
    [cv_file] => Array
        (
            0 => 849649717
            1 => 849649810
        )

    [save] => Save CVs
)

然后你可以做一个foreach:

foreach ($_POST['cv_file'] as $cv)
{
    // Do something with $cv;
}

答案 1 :(得分:0)

您可以对您的数组/对象进行字符串化,然后在PHP端执行json_decode以将字符串转换回数组。

编辑:现在使用正确的PHP函数。

答案 2 :(得分:0)

使用$(form).serializeArray()来构建POST数据的数组。 serializeArray API doc