2016-09-15 36 views
0

發送Ajax請求後,我得到一個數組作爲響應。我想在另一個函數中使用這個數組,我試圖在設置它的值之前聲明該變量而不將它放入任何函數中。Javascript在AJAX響應中聲明全局變量

var their_Info = []; 
    $.ajax({ 
      url: "My PHP url", 
      type: "post", 
      data: {username:usernames} , 
      success: function (response) { 
       their_Info = JSON.parse(response); 
      }); 

如果我想在一個單獨的功能我得到未定義使用their_Info ..

下面是引用PHP腳本:

<?php 
header('Access-Control-Allow-Origin: *'); 
$usernames = $_POST['username']; 
//$ids = join("','",$usernames); 
$link = mysqli_connect("localhost", "root", "vKukRKWZRE", "table"); 
$acc_Info = array(); 
foreach ($usernames as $value) { 
    $query = "SELECT * FROM users WHERE username = '$value'"; 
    $show = mysqli_query($link, $query) or die("Error"); 
    while ($row = mysqli_fetch_array($show)) { 
     array_push($acc_Info, explode(',', $row['wear'])); 
    } 
} 
echo json_encode($acc_Info); 
?> 
+0

可能重複[如何從異步調用返回響應?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-呼叫) – Andreas

+0

你的第一個代碼中有一個右括號缺失 – Keddy1201

+0

你試圖訪問'their_Info'的地方(和什麼時候)? –

回答

0

如果你嘗試之前使用their_Info AJAX完成後,它顯然會返回undefined,因爲AJAX是異步的。

可能的解決方案

調用內部success的功能與數據作爲參數。由此,您將僅在AJAX完成後才使用響應

0

儘管對處理回調的正確方式發表了意見,但您可以使用window.their_info在全局範圍內設置their_info變量。雖然不是真的推薦。