热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jqueryajax在没有firebug断点的情况下不工作-jqueryajaxdontworkwithoutfirebugbreakpoint

Iamusingfollowingmethodtocallthephp:我使用以下方法来调用php:functionvalidateEmaiAjax(email){v

I am using following method to call the php:

我使用以下方法来调用php:

function validateEmaiAjax(email){
    val = null;
    $("#warning").load("https://localhost/Continental%20Tourism/register_ajax.php",{email: email}, function(rspns, stat, xml){
        val = rspns;
    });

    if(val == ".")
        return true;
    else {
        return false;
    }
}

my php code is:

我的PHP代码是:

 0)
        echo "Email address exists!";
    else
        echo ".";   
?>

Basically this do check the database and if email exists shows "Email address exists!" if not I want to return true(so I echo "." and compare it). The weird thing is if i put a break point using firebug near if(val == ".") program works correctly and returns true. If I remove that break point function always return false. I cant understand why this happens. Please help! Thanks.

基本上这会检查数据库,如果存在电子邮件显示“存在电子邮件地址!”如果不是我想要返回true(所以我回应“。”并进行比较)。奇怪的是,如果我使用firebug附近的断点if(val ==“。”)程序正常工作并返回true。如果我删除该断点函数总是返回false。我不明白为什么会这样。请帮忙!谢谢。

4 个解决方案

#1


5  

The reason you have this problem is because you have performed an asynchronous request. This means that the if(rspns == ".") will be reached before the response has been received from the server, and the result will always be false.

您遇到此问题的原因是您已执行异步请求。这意味着在从服务器收到响应之前将到达if(rspns ==“。”),结果将始终为false。

In order to wrap this code in a function the returns a boolean and does not require a callback function (a blocking procedure) you will need to use a synchronous request:

为了在函数中包装此代码,返回一个布尔值,并且不需要回调函数(阻塞过程),您将需要使用同步请求:

function validateEmaiAjax(email) {

  // This is the correct way to initialise a variable with no value in a function
  var val;

  // Make a synchronous HTTP request
  $.ajax({
    url: "https://localhost/Continental%20Tourism/register_ajax.php",
    async: false,
    data: {
      email: email
    },
    success: function(response) {
      // Update the DOM and send response data back to parent function
      $("#warning").html(response);
      val = response;
    }
  });

  // Now this will work
  if(val == ".") {
    return true;
  } else {
    $("#warning").show();
    return false;
  }

}

#2


2  

If you want to make that code work you should use the $.ajax method instead of load and set async to false to make it wait for the response.

如果你想使代码工作,你应该使用$ .ajax方法而不是load并将async设置为false以使其等待响应。

http://api.jquery.com/jQuery.ajax/

$.ajax({
 url:"https://localhost/Continental%20Tourism/register_ajax.php",
 async: false,
 data: {email: email}, 
 success: function(rspns, stat, xml){ 
   val = rspns; 
  }
 });

#3


2  

Why this

else {
    return false;
    $("#warning").show();
}

$("#warning").show(); will never be executed.

$( “#警告”)显示()。将永远不会被执行。

EDIT : There ya go :

编辑:你去:

function validateEmaiAjax(email){
    var URL     = 'https://localhost/Continental%20Tourism/register_ajax.php';
    var Args    = {email: email}

    $('#warning').load(URL, Args, function(html){
        if(html == '.'){
            return true;
        } else {
            $('#warning').show();
            return false;
        }
    });

    return false;
}

Or you can try this also :

或者你也可以尝试这个:

function validateEmaiAjax(email){
    var URL     = 'https://localhost/Continental%20Tourism/register_ajax.php';
    var Args    = {email: email}

    $.ajax({
        url:     URL,
        type:    'GET'
        data:    Args,
        success: function(html){
            if(html == '.'){
                return true;
            } else {
                $('#warning').show();
                return false;
            }
        }
    });

    return false;
}

#4


0  

This is because your function keeps running and hits the if(val == ".") before it's gotten the ajax response back. You need to but that whole if statement inside the ajax callback function.

这是因为你的函数在得到ajax响应之前一直运行并命中if(val ==“。”)。你需要在ajax回调函数中使用整个if语句。

function validateEmaiAjax(email){
    var success;
    $("#warning").load("https://localhost/Continental%20Tourism/register_ajax.php",{email: email}, function(rspns, stat, xml){
        if(rspns == ".")
            success = true;
        else {
            $("#warning").show();
            success = false;
        }
    });
    return success;
}

Also swapped the warning show and return so it would execute

还交换了警告节目并返回以便执行


推荐阅读
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 本文详细探讨了 jQuery 中 `ajaxSubmit` 方法的使用技巧及其应用场景。首先,介绍了如何正确引入必要的脚本文件,如 `jquery.form.js` 和 `jquery-1.8.0.min.js`。接着,通过具体示例展示了如何利用 `ajaxSubmit` 方法实现表单的异步提交,包括数据的发送、接收和处理。此外,还讨论了该方法在不同场景下的应用,如文件上传、表单验证和动态更新页面内容等,提供了丰富的代码示例和最佳实践建议。 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
  • 深入解析 Vue 中的 Axios 请求库
    本文深入探讨了 Vue 中的 Axios 请求库,详细解析了其核心功能与使用方法。Axios 是一个基于 Promise 的 HTTP 客户端,支持浏览器和 Node.js 环境。文章首先介绍了 Axios 的基本概念,随后通过具体示例展示了如何在 Vue 项目中集成和使用 Axios 进行数据请求。无论你是初学者还是有经验的开发者,本文都能为你解决 Vue.js 相关问题提供有价值的参考。 ... [详细]
  • 在探讨Fragment的使用时,FragmentTransaction是不可或缺的一部分。作为管理Fragment操作的核心类,FragmentTransaction提供了诸如显示、隐藏、添加和移除等方法,这些方法在实际开发中被广泛使用。本文将深入解析FragmentTransaction的源码实现机制,帮助开发者更好地理解和优化Fragment的管理。通过分析其内部工作原理,读者可以掌握如何高效地进行Fragment的动态管理和性能优化。 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
author-avatar
娜一刻冻杰幸福
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有