我正在学习jquery。我有一个url,它给出了一个json转储“/ check_email_exists”,它给出了true或false。这主要是jsondump的HttpResponse。
如何编写基于json true或false给出true或false的Javascript函数。
我试过这个
function ifEmailExists(email)
{
return $.getJSON("/check_email_exists/" + email);
}
显然这不起作用。什么是正确的方法?
修改
我也试过这个
function ifEmailExists(email)
{
$.getJSON("/check_email_exists/" + email), function(data)
{
return data;
}
};
没有成功
答案 0 :(得分:1)
来自getJSON
doc:
这是一个简写的Ajax函数
AJAX是异步的(这是第一个A)。这意味着不会立即返回结果。如果要对getJSON
中返回的数据执行某些操作,则需要使用另一个参数,即成功函数。返回对请求的响应时将触发此函数。您无法从函数返回此响应,因为它在您的函数完成执行时尚未进入。
如果您必须阻止并等待响应,则可以使用$.ajax
代替getJSON
并将async
参数设置为false。这将强制呼叫等待响应。这通常是一个坏主意,所以你可能想要考虑是否有某种方法可以使用异步行为获得相同的功能。使用async: false
会在浏览器等待响应时挂起浏览器。如果这个响应需要一些时间才能回来,那么在大多数情况下这将是一个非常糟糕的用户体验。
答案 1 :(得分:0)
$.getJSON("/check_email_exists/" + email), function(data) {
alert(data);
});
当数据只检索布尔值时,你应该能够像这样得到它。 这应警告对错。
如果它发出类似此[object Object]
的警告,则它会检索带有字段名称的对象,在这种情况下,您可以使用此alert(data.exists)
,其中data
是对象,{{1} }是该对象的一个字段。
答案 2 :(得分: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或false