1

Тема: Чому змінна не визначена?

Привіт всім. код:

function loc(id){
    var x_new;
    $.ajax({
            type: "POST",
            url: "test.php",
            data: { id_clic: id }
         })
    .done(function( msg ) {
                x_new = msg;
    });
   alert (x_new);
    return false;
    };

змінній x_new повинно призначитися значення із файла test.php:

<?php
include ("cone.php");
    $login = "UA";
 
    if(isset($_POST['id_clic']))
{
    $get_id_clic = $_POST['id_clic'];
    $query = mysql_query("UPDATE users SET `house`='$get_id_clic' WHERE login='$login' ")  or die("Савсэм плохо: " . mysql_error());
 
 
    $query = mysql_query("select * from users where login='$login'")or die("stop: ".mysql_error);
    $row_users = mysql_fetch_array($query);
    $user_reg = $row_users['city'];
    $id_clic = $row_users['house'];
        
    $click_img = mysql_query("select * from city where id='$id_clic'")or die("stop: ".mysql_error);
    $row_click_img = mysql_fetch_array($click_img);
    echo $row_click_img['x'];
}   
    ?>

Но на екран виводить що змінна не визначена (undefained). чому?
а якщо я alert (x_new) внесу в функцію то все працює.

.done(function( msg ) {
                x_new = msg;
                alert (x_new);
    });

Я читав про об'явлення змінних в функціях (локальне, глобальне). Що я роблю не так в глобальному об'явлені?

2

Re: Чому змінна не визначена?

ajax - це асинхронний запит. Він відправляє запит на сервер і далі виконує код. Тобто ви викликаєте алерт, ще до того як одержали відповідь з сервера. Якщо воно в середині done, то все на місці, бо викликається після відповіді сервера.

Подякували: Faraon, koala2

3 Востаннє редагувалося Faraon (28.01.2015 06:44:16)

Re: Чому змінна не визначена?

Зрозуміло. Дякую.