$ getjson and booleans - PullRequest
       9

$ getjson and booleans

0 голосов
/ 04 августа 2011

Я учусь jquery.У меня есть URL, который дает дамп JSON "/ check_email_exists", который дает истину или ложь.В первую очередь это HttpResponse jsondump.

Как мне написать функцию Javascript, которая дает истину или ложь на основе json истины или ложи.

Очевидно, что это не работает. Какой правильный путь?

edit

Я также пробовал это

function ifEmailExists(email)  
{  
    $.getJSON("/check_email_exists/" + email), function(data)   
    {  

          return data;  


     }
};

Нет успеха

Ответы [ 3 ]

1 голос
/ 04 августа 2011

Из getJSON документа:

Это сокращенная функция Ajax

AJAX асинхронный (это первый A). Это означает, что результат не возвращается сразу. Если вы хотите что-то сделать с возвращенными данными из getJSON, вам нужно будет использовать другой параметр, который является функцией успеха. Эта функция срабатывает, когда возвращается ответ на запрос. Вы не можете вернуть этот ответ из вашей функции, так как он еще не поступил, когда ваша функция завершает выполнение.

Если вам абсолютно необходимо заблокировать и дождаться ответа, вы можете использовать $.ajax вместо getJSON и установить для параметра async значение false. Это заставит звонок ждать ответа. Как правило, это плохая идея, поэтому вы, возможно, захотите подумать, есть ли какой-то способ получить ту же функциональность, используя асинхронное поведение. Использование async: false приведет к зависанию браузера во время ожидания ответа. Если этот ответ займет некоторое время, в большинстве случаев он будет очень плохим для пользователя.

0 голосов
/ 05 сентября 2014

Вы можете создать такую ​​функцию, которая будет возвращать вам true или false

<script src="js/jquery/jquery-1.10.2.js">

function ifEmailExists(email)
{   
    var res=true;
    var result = $.ajax({
    type:"GET",
    url : "check_email_exists",
    data: {email: email},
    dataType : "text",
    async:false
    });
result.done(function(resp){
    if(resp=="false")
        {
        res=false;
        alert("Not Found");
        }
    return resp;
});
return res;
}

Убедитесь, что http://localhost:8080/yourapp/check_email_exists возвращает true или false

0 голосов
/ 23 сентября 2011
$.getJSON("/check_email_exists/" + email), function(data) {  
    alert(data);  
});

Когда данные получают только логическое значение, вы должны иметь возможность получить его следующим образом. Это должно привести к предупреждению True или False.

Если он предупреждает что-то вроде этого [object Object], то он получает объект с именами полей, в этом случае вы можете использовать этот alert(data.exists), гдеdata является объектом, а exists является одним полем этого объекта.

...