2011-08-04 37 views
0

我正在学习jquery。我有一个URL给出了一个JSON转储“/ check_email_exists”,它给出了真或假。这主要是jsondump的HttpResponse。

如何编写一个基于json的true或false给出true或false的Javascript函数true或false。

我想这

function ifEmailExists(email) 
{ 

    return $.getJSON("/check_email_exists/" + email); 
} 

显然,这不是working.What是正确的方法是什么?

编辑

我也试过这个

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

      return data; 


    } 
}; 

没有成功

回答

1

getJSON DOC:

这是一个简写的Ajax功能

AJAX是异步的(这是第一个A)。这意味着结果不会立即返回。如果你想从getJSON返回的数据做一些事情,你需要使用其他参数,这是一个成功的功能。该函数在返回请求的响应时触发。你不能从你的函数返回这个响应,因为在你的函数完成执行时它还没有进入。

如果您绝对必须阻止并等待响应,则可以使用$.ajax而不是getJSON,并将async参数设置为false。这将迫使电话等待响应。这通常是一个坏主意,所以你可能想要考虑是否有一些方法可以让你使用异步行为获得相同的功能。使用async: false将等待响应时挂起浏览器。如果此响应需要一段时间才能恢复,则在大多数情况下,这将是非常糟糕的用户体验。

+0

+1,而不是只是建议'异步:错误'。 –

+0

我开始明白你在说什么,但是我怎样才能通过json获得布尔值,然后提供一个javascript布尔变量 – ramdaz

+0

在你的第二个例子中,函数中返回的'data'是一个代表的对象由你的JSON。如果该对象包含一个布尔变量,那么它可以被访问。您需要提供您要返回的JSON以获得更具体的答案。 –

0
$.getJSON("/check_email_exists/" + email), function(data) { 
    alert(data); 
}); 

当数据只检索布尔值时,您应该可以像这样得到它。 这应该警示真或假。

如果它会提醒像这样[object Object],然后将其与retrievs字段名称的对象,在这种情况下,你可以使用这个alert(data.exists),其中data为对象,exists是对象的一个​​领域。

0

可以使这样的函数返回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或提供有关异步请求警告假