0

データのリストを javascript 配列から php 配列に転送しようとしていますが、ajax でうまくいかないようです。誰かがこれを行う方法のコードを見せてもらえますか? これまでのところ、私が持っているものは次のとおりです。これは単なる配列です。

ジャバスクリプト
var dates;
// the dates array is then filled up here
// it contains information in the form {'2012-01-01', '2012-03-12', ...}

$.ajax({        
   type: "REQUEST",
   url: "NAMEOFPHPFILE.php",
   data: { sendData1 : dates },
   success: function() {
        alert("Attempting to transfer array -> AJAX");        
   }
}); 

var submissions;
// the submissions array is then filled up here
// it contains information in the form {int, int, ...}

// ect ......... with 3 more arrays using { sendData2 : submissions },
PHP
<?php
$bDates = $_REQUEST['sendData1']; 
// need to set this array = to the JavaScript dates array
$bSubmissions = $_REQUEST['sendData2'];
// need to set this array = to the JavaScript submissions array
?>

URL に情報がログインするのを防ぐために、REQUEST メソッドを使用したいと思います。 このコードは、REQUEST の代わりに POST を試行しても機能しません

.php ページの最後で、多数の配列を CSV ページに出力しています。ここで、配列を繰り返し処理し、それらの要素をファイルに配置します。これはすでに機能していますが、データを吐き出すことができるように、これらの配列の一部を JavaScript から PHP に転送する必要があります。それは次のようになります。

<?php


$stringData = "Dates, Number of Lines Changed, , Bug Dates, Arrivals, Fixed, Closed, Hold_";
for($i = 0; $i < sizeof($dataXAxis); $i++){
        $date = substr($_REQUEST['Dates'][$i+1], 0, 24);
        $stringData .= "$date, $dataYAxis[$i], , $bDates[$i], $bSubmissions[$i], $bCompletions[$i], $bDones[$i], $bRejections[$i]_";
}


echo '<BR><BR><a href="download_csv.php?csv=' . $stringData . '" target="_blank">Download Your CSV File</a>';
?>

AJAX が機能しないのはなぜですか? 配列は空に見えます...

4

5 に答える 5

3

1 つの方法は、JSON の形式でデータを送信することです。次に、json_decode を使用して、配列に変換できます。例:

   var Json = {"User1":"John", "User2":"Joe", "User3","Jerry"};
   var data = "data="+Json;
   hr = new XMLHttpRequest();
   hr.onreadystatechange = function(){
       if(hr.readyState == 4 && hr.status == 200){
           console.log(hr.responseText);
       }
   }
   hr.open("POST", "parsefile.php", true);
   hr.send(data);

次に、PHP ファイルでデータを取得すると、次のようになります。

 $data = $_POST['data'];
 $array = json_decode($data, true);

これにより、データを連想配列に変換するよう php に指示されます。その後、連想配列として操作できます。

于 2012-11-02T23:54:40.397 に答える
1

単純に配列を文字列に変換する

var data = [1,2,"hello"];
var data_str = data.join(","); 

その後、php で文字列を配列に変換します。

$array = explode(",", $_REQUEST["data"]);
于 2012-11-03T00:06:18.697 に答える
1

私は文字通りこれに取り組んでいました。

jQuery

var group_ids = $('.form-elements li').map(function(){
    return $(this).data('group-id')
}).get()

$.get('{{ url('group/update_order_by') }}', {group_ids: group_ids});

安らかな Laravel フレームワークの PHP

public function get_update_order_by()
{
    $group_ids = Input::get("group_ids");
    $group_count = count($group_ids);

    for ($i = 0; $i < $group_count; ++$i) {
        $group = Group::find($group_ids[$i] );
        $group->order_by = $i;
        $group->save();
    }

    return true;
}

生の PHP (うーん...)

    $group_ids = $_GET("group_ids");
    $group_count = count($group_ids);

    for ($i = 0; $i < $group_count; ++$i) {
        echo $group_ids[$i];
    }

    return true;
于 2012-11-02T23:53:45.237 に答える
0

まず、簡単にするために、送信して解析する両方の配列を保持する配列を作成します。

var request = Array(dates, submissions);

次に、リクエストを適切な形式の JSON として送信していることを確認してください。さらに、テストするときは、コールバックでリモート ファイルからの出力を返して、データがどのように解析されたかを確認することをお勧めします。POST 経由で送信するだけでなく、次の実装をお勧めします。

$.ajax({        
   type: "POST",
   url: "NAMEOFPHPFILE.php",
   contentType: "application/json; charset=utf-8",
   data: JSON.stringify(request),
   success: function(data) {
        alert(data);        
   }
}); 

PHP ファイルで、以下を使用して、前述のリクエストの内容を配列に解析できます。

<?php
// convert json data read from the input stream to an array
// *note* you MUST set the true flag in the json_decode() function, otherwise it will convert the data into an object
$request = json_decode(file_get_contents('php://input'), true);
var_dump($request);

これで、配列の var_dump を含むアラートが表示されるはずです (ごちゃごちゃしているように見えます!)。

始めるにはこれで十分です。お役に立てば幸いです。

于 2012-11-03T00:11:22.167 に答える
0

PHP では、REQUEST配列が次の形式で渡されることが期待されます。

sendData1[]=first&sendData1[]=second&sendData1[]=third

これは自動的に配列に変換されます。

$sendData = $_REQUEST['sendData`];
echo $sendData[0];
echo $sendData[1];
于 2012-11-02T23:43:26.577 に答える