首页 文章

通过jQuery $ .ajax将JavaScript数组传递给PHP

提问于
浏览
76

我想在PHP中操作JavaScript数组 . 可以这样做吗?

$.ajax({
       type: "POST",
       url: "tourFinderFunctions.php",
       data: "activitiesArray="+activities,
       success: function() {
            $("#lengthQuestion").fadeOut('slow');
       }
    });

活动是一个单维数组,如:

var activities = ['Location Zero', 'Location One', 'Location Two'];

我尝试这个时脚本没有完成...我该如何解决?

8 回答

  • 0

    这对我有用:

    $.ajax({
        url:"../messaging/delete.php",
        type:"POST",
        data:{messages:selected},
        success:function(data){
         if(data === "done"){
    
         }
         info($("#notification"), data);
        },
        beforeSend:function(){
             info($("#notification"),"Deleting "+count+" messages");
        },
        error:function(jqXHR, textStatus, errorMessage){
            error($("#notification"),errorMessage);
        }
    });
    

    这对你的 PHP

    $messages = $_POST['messages']
    foreach($messages as $msg){
        echo $msg;
    }
    
  • 9

    使用将数组操作数附加到所需变量名称的PHP内置功能 .

    如果我们将值添加到Javascript数组,如下所示:

    acitivies.push('Location Zero');
    acitivies.push('Location One');
    acitivies.push('Location Two');
    

    它可以按如下方式发送到服务器:

    $.ajax({        
           type: 'POST',
           url: 'tourFinderFunctions.php',
           'activities[]': activities
           success: function() {
                $('#lengthQuestion').fadeOut('slow');        
           }
    });
    

    注意活动[]周围的引号 . 这些值将如下:

    $_POST['activities'][0] == 'Location Zero';
    $_POST['activities'][1] == 'Location One';
    $_POST['activities'][2] == 'Location Two';
    
  • 10
    data: { activitiesArray: activities },
    

    而已!现在您可以在PHP中访问它:

    <?php $myArray = $_REQUEST['activitiesArray']; ?>
    
  • 143

    您需要在发送之前将数组编码为JSON,否则您只会在另一端获得一些垃圾 .

    由于你发送的只是数组,你可以这样做:

    data: { activities: activities }
    

    这将自动为您转换数组 .

    有关详细信息,请参阅here .

  • 1

    你需要把它变成一个字符串 . 您可以使用JSON2库中的stringify方法执行此操作 .

    http://www.json.org/

    http://www.json.org/js.html

    代码看起来像:

    var myJSONText = JSON.stringify(myObject);
    

    所以

    ['Location Zero', 'Location One', 'Location Two'];
    

    会变成:

    "['Location Zero', 'Location One', 'Location Two']"
    

    您将不得不向PHP大师询问如何在服务器上处理此问题 . 我认为其他答案在这里是一个解决方案 .

    可以以类似的方式从服务器返回数据 . 即你可以把它变成一个对象 .

    var myObject = JSON.parse(myJSONString);
    
  • 11

    我知道回答这个问题可能为时已晚,但这对我很有帮助:

    • var st = JSON.stringify(your_object); 字符串化你的javascript对象(json)

    • 将您的POST数据传递为"string"(也许使用jQuery: $.post('foo.php',{data:st},function(data){... });

    • 在服务器端处理中解码数据: $data = json_decode($_POST['data']);

    就是这样......你可以自由地使用你的数据 .

    多维数组和单个数组作为普通数组处理 . 要访问它们,只需执行正常的 $foo[4] .

    关联数组(javsacript对象)作为php对象(类)处理 . 要访问它们就像类: $foo->bar .

  • 1

    使用JQuery Serialize函数

    http://docs.jquery.com/Ajax/serialize

    Serialize通常用于准备要发布到服务器的用户输入数据 . 序列化数据采用标准格式,几乎与所有服务器端编程语言和框架兼容 .

  • 0

    我应该是这样的:

    $.post(submitAddress, { 'yourArrayName' : javaScriptArrayToSubmitToServer },
      function(response, status, xhr) {
        alert("POST returned: \n" + response + "\n\n");
      })
    

相关问题