【问题标题】:KO 3.2 - need advice about ajax designKO 3.2 - 需要关于 ajax 设计的建议
【发布时间】:2013-03-01 12:36:34
【问题描述】:

我正在使用 ajax 通过 kohana 路由调用控制器。在此控制器内部,我验证表单的所有字段,并将有关未通过验证的字段的数据保存到属性中。

接下来我要做的是对同一个控制器进行第二次 ajax 调用,检索这个属性,然后用它做一些动作。

但是,在第二次调用中,属性显然是空的。

有没有办法解决这个问题?没有在第一个 ajax 调用中回显属性?

编辑。

$("#form").validate({
   rules {
      remote: "ajax_file.php"
   }
   messages {
      // I want to get information from ajax call above here
   }
});

jQuery:1.9.0

在第一个块(规则)中,我必须回显 TRUE 或 FALSE - 这就是为什么我不能回显有关失败字段的信息。

在 ajax_file.php 中,我正在收集有关失败字段的数据,我必须在下面进行第二次 ajax 调用(消息)并在第二个 .php 文件中处理这些数据。

【问题讨论】:

  • 在第一个 ajax 调用中回显属性有什么问题?您可以跳过一步并以这种方式加速应用程序。您不想这样做的任何特殊原因?
  • 此外,我们无法在不查看问题的情况下告诉您问题所在。这里没有人会猜到你的应用程序是什么样子的,所以我建议你给我们一些代码。
  • 好的,谢谢,我编辑并更好地描述了我的问题。

标签: php jquery ajax validation kohana


【解决方案1】:

据我了解,您想验证一个字段,对吗?你为什么不通过使用 kohana 类 'Validate' (Validate::factory($_POST)) 和你希望的任何规则来验证你的控制器中的字段......然后将结果返回到表单。

PS 在您的情况下,您可以在第一次调用完成后使用 ajax 成功选项执行第二次 ajax 调用

【讨论】:

    【解决方案2】:

    避免提出两个请求...您可以改为在一个请求下进行..

    在你的控制器中

    public function action_ajaxmethod(){
    
      // do some validation code here
      // every error will be stored in
      // **err** variable
    
      if(!empty(err)) die(json_encode("success" => false, "errors" => err));
      else die(json_encode("success" => true));
    }
    

    在你的 js 中

    $.ajax({
      url: 'ajaxmethod',
      data: {data: data},
      type: 'POST',
      dataType: 'json',
      success: function(result){
        if(result['success']==true){
          // do some actions
        }
        else{
          // do some actions
        }
      }
    });
    

    希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 2014-03-30
      • 1970-01-01
      • 2011-05-20
      • 2012-09-24
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多