0

私は ajax にまったく慣れていません。この問題を解決できず、それについて議論している他のトピックが見つかりません。私がしなければならないことは、配列をphpスクリプトにajaxで送信することです。
配列は連想配列[index][value]です。問題は、配列を php に送信すると、それが単次元配列のように見えることです。つまり、例:
配列が ["apple", "pear", "orange"] の
場合: array[0] は "apple" を出力します。

しかしphpでは、配列はすべての文字列の連結である1​​つの要素のみで構成されています。したがって、array[1] を出力すると、"p"、array[4] "e" などが取得されます。
どうすれば修正できますか?

よろしくお願いいたします。

var items = new Array();

コード AJAX スクリプト:

    $.ajax({

      type: "POST",
      url: "calculate.php",

      data: "items=" + items, 
      dataType: "html",

      success: function(msg)
      {
        var response = jQuery.parseJSON(msg);
        $('#second_results').html(response.output); 
      },
      error: function()
      {
        alert("Failed"); 
      }
    });

PHP:

$items = $_REQUEST["items"];

4

4 に答える 4

0

ここにもさまざまなメソッドがあります: $.ajax() で ajax リクエストに配列を渡します。ここにも、適切に注釈が付けられた例があります http://www.islandsmooth.com/2010/04/send-and-receive-json-data-using-ajax-jquery-and-php/

于 2013-03-25T11:36:54.197 に答える
0

これを ajax 呼び出しのデータに渡します。

        var a = {};
        a["key1"] = "val1";
        a["key2"] = "val2";
        a["key3"] = "val3";
$.ajax({

  type: "POST",
  url: "calculate.php",

  data: a ,
  dataType: "html",

  success: function(msg)
  {
    var response = jQuery.parseJSON(msg);
    $('#second_results').html(response.output); 
  },
  error: function()
  {
    alert("Failed"); 
  }
});

Php 側:

 if($_SERVER["REQUEST_METHOD"]=="POST")
{
   foreach($_POST as $key=> $val){
   echo $key."and".$val;
   }
    die();
}
于 2013-03-25T11:38:30.983 に答える
0

ここにはいくつかの選択肢があります。そのうちの2つを紹介します。

1)

カンマでパラメータを区切り、カンマで分割します。

// ...
data: "items=" + item1 + "," + item2 + "," item3,
// ...

$items = explode(',', $_REQUEST['items']);

2)

他の表記を使用します。

// ...
data: "items[0]=" + item1 + "&items[1]=" + item2 + "&items[2]=" + item3,
// ...

$items = $_REQUEST['items'];

どちらもテストしていませんが、一般的には機能するはずです。:)

また、次の項目も参照してください。クエリ文字列を配列に解析して、php が正しい変換を処理できるようにします。

于 2013-03-25T11:30:58.020 に答える