【问题标题】:Mootools ajax form responseMootools ajax 表单响应
【发布时间】:2010-03-03 10:42:01
【问题描述】:

我正在尝试使用 mootools 发送表单,并根据 php 脚本的响应来做这样或那样的事情。问题是我无法在代码的onComplete 部分中使用条件语句。

我可能遗漏了一些非常明显的东西,请帮助我:)

$('formName').addEvent('submit', function(e){
    e.stop();                      
    var req = new Request.HTML({
      url       : 'phpUrl.php',
      data      : $('formName'),
      update    : $('modify-me'),
      onComplete: function(){
            $('formName').reset();
            if($('modify-me').get('text') = "1"){
                alert("succeed");
                }else{
                alert("failure");
                }
            }  
    }).send();                    
  });

这是我在代码中使用 php 响应的蹩脚尝试,但它当然没有用。 不用说,我是所有这些异步客户端-服务器通信的新手,但我真的很感兴趣。

【问题讨论】:

    标签: javascript ajax forms submit mootools


    【解决方案1】:

    您在 if 语句中赋值(单个 =),而不是检查相等性(==)。换行

    if($('modify-me').get('text') = "1")
    

    if($('modify-me').get('text') == "1")
    

    【讨论】:

    • 很好,在这里 +1。但是有没有办法不必在条件语句中使用它的值之前将响应分配给一个元素?我的意思是,难道不应该有一种方法可以在不做那种丑陋的事情的情况下区分成功和失败吗?
    • 我不确定我是否理解 - 我没有使用过 MooTools,但 Google 似乎建议 onComplete 只会在响应成功完成后触发?
    • 成功完成并不意味着来自 php 脚本的特定响应,这就是我无法实现的。我想直接使用响应的值,而不是之前将其添加到元素中。
    • 来自 MooTools API:mootools.net/docs/core/Request/Request.HTML。看起来 onComplete 已被 onSuccess 替换,您可以在函数中访问响应 HTML(以及其他内容)
    • onSuccess 与 onComplete 不同
    【解决方案2】:

    对不起,伙计们,我可能迟到了……我正在为客户端开发 Mootools 1.2.4,为后端开发 PHP。这是我提交表单并从服务器获取响应的方式...

        $('myFormID').set('send', {
            noCache: true,
            onRequest: function(){
                // show some rotating loader gif...
            },
            onComplete: function(response) {
                // hide the loader gif...
                objJson = JSON.decode(response);
                if(objJson.success){
                    // do your success stuff...
                    alert(objJson.msg);
                } else {
                    alert(objJson.msg);
                }
            },
            onFailure: function(){
                alert("Request Aborted.");
            }
        }).send();
    

    在我的例子中,表单提交是由一个按钮触发的,但可以是任何东西......让我们看看服务器端(我使用 PHP,但任何其他语言都不错)

        if($somethingWentWrong){
        echo json_encode(array("success" => false, "msg" => "Check your form."));
    } else {
        echo json_encode(array("success" => true, "msg" => "Data saved."));
    }
    

    在所有服务器端检查和验证(可能是 MySql 数据库上的更新)之后,我只返回一个 Json 数组(这就是我在客户端地球上有一个 JSON.decode(response) 的原因)然后只需检查“成功”键以发现提交是否在服务器端月球上成功。我只是添加一条在警报中显示的小消息。显然,我可以使用 JSON 数组将更多数据发送回客户端,但在这种情况下就足够了。希望这会有所帮助,请让我知道更好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多