2013-06-02 23 views
3

我使用ajax從數據庫中檢索數據並將其存儲爲數組,然後返回結果。我的目標是,當用戶點擊「Click Me」按鈕時。我想從返回的數據中提醒第一個數組。但是,我的代碼下面沒有返回任何東西。如何使用從Ajax返回的數據?

<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); 

?> 
+0

您正在發佈頁面加載 - >不那麼聰明!使用'$(document).ready(function(){/ * ajax call * /});'你必須把你的javascript放在''之間。爲什麼不單擊按鈕時的帖子。請看我的答案。 – botenvouwer

回答

1

不要聲明數據陣列作爲一個局部變量,在嵌套成功回調聲明消除 '變種' 使用全局之一:

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

這只是一個錯字,仍然不起作用 – user2310422

+0

非常感謝!我會在10分鐘內接受你的回答 – user2310422

0

由於ajax請求是異步的,它不會以這種方式工作。一件事,你可以做的是

var data_array; 

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

或者,如果你確保你點擊該按鈕的數據被接收您的本次代碼會工作後,才

第三種選擇是檢索時數據用戶點擊按鈕

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

}); 
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); 

?> 

你看它是多麼容易!