3

私は ajax を使用してデータベースからデータを取得し、それを配列として保存してから、結果を返します。私の目標は、ユーザーが「Click Me」ボタンをクリックしたときです。返されたデータから最初の配列にアラートを出したい。ただし、以下のコードは何も返しません。

<input type="button" id="click_me" value="Click Me"/>

var data_array;

$.post('generate.php', {id: id}, function(data){
                data_array= data;         
});

$('#click_me').click(function(){
   alert(data_array[0]);
});

generate.php

<?php
    header('Content-Type: application/json');
    $array = array('Hello', 'Good Morning', 'Nice to meet you');

    echo json_encode($array);

?>
4

3 に答える 3

1

data-array をローカル変数として宣言しないでください。ネストされた成功コールバック宣言で「var」を削除して、グローバル変数を使用してください。

$.post('generate.php', {id: id}, function(data){
                data_array= data;         
});
于 2013-06-02T19:08:34.847 に答える
0

私が見たように、あなたはjsonとJavascriptを使いたいと思っています。MIME タイプで json を送信するapplication/jsonと、自動的に配列に転送されます。これは、json が尊敬されるデータ型であり、すべての主要なブラウザーがそれをサポートしているためです。

これは私のjquery/javascriptです:

                $(document).ready(function () { 
                    $('body').on('click', '#clickme', function(){
                        $.post('json.php', function (json){ 

                            // Now do stuff with the json
                            var table = ''; 
                            for(q = 0; q < $(json).size(); q++){
                                table += '<tr><td>' + json[q] + '</td></tr>';
                            }
                            var content = '<table>' +table+ '</table>';
                            $('#put_stuf_inside_me').html(content);

                        }); 
                    });
                });

私のhtml:

<input type="button" id="clickme" value="do magic" />
<div id="put_stuf_inside_me"></div>

私のphp:

<?php

    header('Content-Type: application/json');
    $array = array('Hello', 'Good Morning','Nice to meet you','I put something over here');

    echo json_encode($array);

?>

とても簡単です。

于 2013-06-02T20:24:32.807 に答える
0

ajax リクエストは非同期であるため、この方法では機能しません。あなたができることの1つは、

 var data_array;

  $.post('generate.php', {id: id}, function(data){
      data_array= data; 
      $('#click_me').click(function(){
      alert(data_array[0]);
   });        
});

または、データが受信された後にのみボタンをクリックしていることを確認すると、現在のコードが機能します

3 番目のオプションは、ユーザーがボタンをクリックしたときにデータを取得することです。

 $('#click_me').click(function(){
      $.post('generate.php', {id: id}, function(data){
       data_array= data; 
     alert(data_array[0]);        
   });

 });
于 2013-06-02T19:10:51.307 に答える