0

これが私のphpコード$contentsです。変更イベントの後に渡す必要があります..

<?php

    if($flag == true){
        $contents = $store; // this is the array that needs to be passed
        $color = array();
        foreach($store as $item){
            $color[] = $item['color'];
        }
        $u_color = array();
        $u_color = array_unique($color);
        echo '<label>Available Colors:</label>
        <select id="color">
            <option>Select a color</option>';
        foreach($u_color as $item){
            echo '<option>'.$item.'</option>';
        }
        echo '</select>';
    }

    ?>

これは、変更イベントの後にトリガーする必要がある私のjquery/ajaxコードです

$(function () {
    $('#color').live('change', function () {
        var data = <? php echo json_encode($contents); ?> ;
        var the_array = $.parseJSON(data);
        $.ajax({
            url: 'wp-content/themes/twentyeleven-child/receiver.php',
            type: 'post',
            data: {
                data: the_array
            },
            datatype: 'json',
            success: function () {

            }
        });
    });
});

これが私のreceiver.php

   <?php

print_r($_POST['data']);

?>

my が含まれているものは次の$contentsとおりです。

    Array
(
    [0] => Array
        (
            [size] => 2
            [price] => $59.00
            [color] => Black
        )

    [1] => Array
        (
            [size] => 4
            [price] => $59.00
            [color] => Black
        )

    [2] => Array
        (
            [size] => 6
            [price] => $59.00
            [color] => Black
        )

    [3] => Array
        (
            [size] => 8
            [price] => $59.00
            [color] => Black
        )

    [4] => Array
        (
            [size] => 10
            [price] => $59.00
            [color] => Black
        )

    [5] => Array
        (
            [size] => 12
            [price] => $59.00
            [color] => Black
        )

    [6] => Array
        (
            [size] => 14
            [price] => $59.00
            [color] => Black
        )

    [7] => Array
        (
            [size] => 16
            [price] => $59.00
            [color] => Black
        )

)
4

3 に答える 3

1

ページに ajax リクエストを送信する

jQuery.ajax()を使用して、配列を POST 経由でサーバーに送信できます (コードに一部欠けていることがあります)。

$.ajax({
  type: 'POST',
  url: 'receiver.php',
  data: { myarray: the_array },
  success: function(data){
    // executed on success
  },
  dataType: dataType
});

レンダリングされたページの値を初期化する

レンダリングされた PHP テンプレートで js にコードを渡したい場合は、使用json_encode()して PHP 配列/オブジェクトを JavaScript Object Notation 文字列に「変換」します。

<script>
var the_array = <?php print json_encode($the_array); ?>;
// ...
</script>

async (ajax) リクエストへの返信

json を呼び出し元に返したい場合receiver.php(例: success 関数)、それを出力するだけです。

<?php

// .. do stuff here ..

header('Content-type: application/x-json');
print json_encode($the_array);

?>

その後、コールバックのように「自動的に」取得$the_arraydataますsuccess:

于 2012-10-16T22:46:37.647 に答える
1

これを試して

 var the_array = $array.join() ;

コンマ区切りの文字列として配列に結合し、これを Ajax リクエストに渡すことができます。

それ以外の場合は、配列をシリアル化し、配列オブジェクトをリクエストにも渡すことができます。

 vat the_array = $array.serializeArray();
于 2012-10-16T22:37:49.703 に答える
1

ここには実際の Ajax リクエストが表示されません ... 使用$.ajax... または$.post... または$.get

編集して追加:

var data = '<?php echo json_encode($array);?>'; var the_array= $.parseJSON(data);

完全な例:

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<?php
  $array = array();
  $array['id'] = '2335';
  $array['data'] = 'data string';
?>

<script type="text/javascript">
$(function() {
  var data = '<?php echo json_encode($array);?>';
  var the_array = $.parseJSON(data);
  // keep in mind that the_array is Object not Array 
  // may be you should convert it to an Array
  // other way is to post 'data' adding it to array  var the_array = ('data': data);   
});
</script>
</body>
</html>
于 2012-10-16T22:42:57.943 に答える