如何赚$.Get返回一个值
How to make $.get return a value
我在JavaScript和jQuery中有这个代码,我需要修复它:
function valid_form() {
val_avail_email=valid_avail_email();
if (val_avail_email!="") {
$("#email_valid").html(val_avail_email);
return false;
}
return true;
}
function valid_avail_email() {
var error="";
$.get("valid_avail_email.php",{email:document.reg_form.email_reg.value},function(output) {
error=output;
});
return error;
}
显然,我想让error
变量包含valid_avail_email.php
的输出,然后让valid_avail_email()
函数返回该值。
以下是valid_avail_email.php
中的代码:
<?php
include("config.php");
$email=$_GET["email"];
$sql="select email from users";
$sql_query=mysql_query($sql);
if (!$sql_query) {
echo mysql_error();
}
$res_assoc = mysql_fetch_assoc($sql_query);
foreach ($res_assoc as $field=>$value) {
if ($value==$email) {
echo "please use another email this one is taken ";
}
}
?>
问题是$.get()函数发起异步ajax调用,这意味着,当ajax调用仍在运行时,函数返回。你必须在ajax回调函数中通知GUI,例如:
$.get("valid_avail_email.php",{email:document.reg_form.email_reg.value},function(output) {
error=output;
if (error !== '')
alert('Sorry, use another email!');
});
您不需要执行foreach循环来检查电子邮件是否在db中。只需执行以下查询:
SELECT email FROM users WHERE email = '$email'
并检查结果是否包含任何项。此方法比使用"foreach"循环枚举所有电子邮件要快,因为数据库返回1或0个结果,如果您有一个大数据库,则不会返回数千个结果。
你的valid_avail_email()是ok..只要在JS中检查函数是否返回任何东西,如果是,则有警告显示错误:
var emailOk = valid_avail_email("blabla@email.com");
if(emailOk != ""){
//the following alert will show the error from php, it can show mysql_error() or "please use another email.." message
alert(emailOk);
//do stuff to abort the script
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 我应该如何从xml文件构建一个javascript页面
- Regex代码只允许一个空格
- 如何赚$.Get返回一个值