2010-01-06 58 views
72

我想操縱在PHP中的JavaScript數組。是否有可能做這樣的事情?

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

活動就像是一個單一的維數組:

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

的腳本時,我嘗試這個...我怎樣才能修復它沒有完成?

+0

的可能重複的[傳遞一個PHP字符串JavaScript變量(和逃避換行符)](http://stackoverflow.com/questions/168214/pass-a-php -string-to-a-javascript-variable-and-escape-newlines) – Anthon 2013-03-26 05:51:46

回答

134
data: { activitiesArray: activities }, 

這就是它!現在你可以在PHP中訪問它:

<?php $myArray = $_REQUEST['activitiesArray']; ?> 
+10

爲什麼這個答案很難找到!?謝謝,這正是我需要的。 – 2012-05-08 23:43:44

9

你需要把它變成一個字符串。您可以使用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); 
+0

堅韌的一半,這確實是一個很好的答案:) – atjoshi 2014-06-25 17:24:51

10

你會想要在發送它之前將數組編碼爲JSON,否則你只會在另一端得到一些垃圾。

因爲所有你發送的數組,你可以做:

data: { activities: activities } 

將自動轉換爲數組你。

詳見here

1

使用JQuery的Serialize函數

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

序列化通常用於製備 用戶輸入數據要被髮布到 服務器。序列化的數據是在作爲兼容 與幾乎所有的服務器端 編程語言和框架一 標準格式。

8

我知道這可能是來不及回答這個問題,但是這個工作對我來說在一個偉大的方式,即用var st = JSON.stringify(your_object);

    1. 字符串化的JavaScript對象(JSON)通過你的POST數據爲「字符串」(可能使用jQuery:$.post('foo.php',{data:st},function(data){... });

    2. 解碼您在服務器端處理的數據:$data = json_decode($_POST['data']);

    就是這樣......您可以自由使用您的數據。

    將多維數組和單個數組作爲普通數組進行處理。要訪問他們只是做正常的$foo[4]

    關聯數組(javsacript對象)作爲php對象(類)處理。要訪問他們只是像類:$foo->bar

  • 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; 
    } 
    
    0

    我應該是這樣的:

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

    使用PHP內置將數組操作數附加到所需的變量名稱的功能。

    如果我們增加值的Javascript數組如下:

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

    注意周圍活動引號[]:

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

    它可以如下發送到服務器。的值將可如下:

    $_POST['activities'][0] == 'Location Zero'; 
    $_POST['activities'][1] == 'Location One'; 
    $_POST['activities'][2] == 'Location Two';