将带有Ajax的数组传递给PHP脚本导致空帖

时间:2014-07-23 15:02:39

标签: javascript php jquery ajax

我想使用AJAX将数组从HTML站点传递到PHP脚本

JS

function selectPictures() {
    //selected Pictures is my JS array
    var jsonArray = JSON.stringify(selectedPictures);

    var request;
    request = $.ajax({
        url: "selectedPictures.php",
        type: "POST",
        data: {
            data: jsonArray
        },
        cache: false
        success: function () {
            alert('OK');
        }
    });
}

HTML

href="selectedPictures.php" onclick="selectPictures();"

PHP

if (isset($_POST['data'])) {
    $data = json_decode(stripslashes($_POST['data']));
    foreach($data as $d) {
        echo $d;
    }
}

实际上我想将数据发送到另一个HTML页面,然后包含PHP脚本,但我不明白为什么这个例子甚至不起作用。 $_POST['data']未设置。

更新 好吧,Ajax帖子实际上正在工作,因为我看到HTTP请求成功但是:我无法立即访问变量。我需要立即访问传递的数组的值来执行另一个PHP脚本。当我想这样做时,我得到一个未定义的索引错误。同样在执行isset函数时,它返回false(尽管HTTP请求成功)。

1 个答案:

答案 0 :(得分:3)

<强> HTML

<a href="#" id="selectPictures">click</a>

<强> JS

$(function(){
  $('#selectPictures').click(function(){
    var jsonArray = JSON.stringify(selectedPictures);   
    var request = $.ajax({
    url: "selectedPictures.php",
    type: "POST",
    data: {data: jsonArray},
    cache: false,
    success: function(data){alert(data);}
    });
  });
});

在chrome中使用f12查看错误,忘记在“cache:false”之后添加逗号