Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery rails,通过ajax请求,获得成功_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

Jquery rails,通过ajax请求,获得成功

Jquery rails,通过ajax请求,获得成功,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,我有以下建议: <%= text_field_tag 'group_name','',:placeholder => "#{t "placeholder_group_name"}", :class => "group_name" %> 似乎我通过键入$this.val错误地访问了text_field_标记中的文本。我可以访问带有类“组名称”的文本字段标记中的文本吗 编辑:回复 <div id="content"> <script src="//code

我有以下建议:

<%= text_field_tag 'group_name','',:placeholder => "#{t "placeholder_group_name"}", :class => "group_name" %>
似乎我通过键入$this.val错误地访问了text_field_标记中的文本。我可以访问带有类“组名称”的文本字段标记中的文本吗

编辑:回复

<div id="content">
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<script>
$( function() {
$( ".group_name" ).on("onchange",function(e) {
    $.ajax({
    url: '<%= group_name_exists_groups_path %>',    
    data: {group_name: $(this).val()}, 
    success: function(){
      alert('success');
                       },
    error: function(){
      alert('failure');
                       }

    });
});
});
</script>

<%= text_field_tag 'group_name','',:placeholder => "#{t "placeholder_group_name"}", :class => "group_name" %>       
</div>


 def group_name_exists
     logger.info "giveHint #{params}"
     group_name = params[:group_name]
     group = Group.find_by_sql("SELECT DISTINCT gk1 FROM groups WHERE gk1 = '#{group_name}';")   
     if group.empty?
       succ = false         
     else
       succ = true
     end

     respond_to do |format|
       format.js { render :json => {:success => succ}}
     end

  end
但我总是抓住一个失败,这意味着我抓住了一个错误。虽然我发送了success=>true

但您有两个错误:

首先,val是一个函数,因此您应该调用$this.val以获取所选选项


第二,您得到的错误是,默认情况下ajax请求是format.js,而不是format json,因此您的控制器正在查找组_name_exists.js.erb,该组不存在。您应该用一些东西响应format.js,或者创建该视图。

Rails试图显示一个不存在的模板?你可以检查你的控制器对json的响应。我知道,但我不明白他为什么抱怨,我正在呈现json,所以它应该是好的,不是吗?我尝试了:format.js{render:json=>{render:success=>false}它仍然抱怨,或者,如果我想在ajax中捕获一个success=>false,那么我应该如何响应?相应的tempalte是否存在?错误是什么?我不需要相应的模板,因为我用JSON响应格式。如果我说的不起作用,请发布您的实际代码。您发布的代码应该会导致语法错误,因为您缺少结尾。而且,如果缩进正确,会容易得多。
An ActionView::MissingTemplate occurred in groups#group_name_exists:

Parameters: {"group_name"=>"undefined", "action"=>"group_name_exists", "controller"=>"groups", "locale"=>"en"}
<div id="content">
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<script>
$( function() {
$( ".group_name" ).on("onchange",function(e) {
    $.ajax({
    url: '<%= group_name_exists_groups_path %>',    
    data: {group_name: $(this).val()}, 
    success: function(){
      alert('success');
                       },
    error: function(){
      alert('failure');
                       }

    });
});
});
</script>

<%= text_field_tag 'group_name','',:placeholder => "#{t "placeholder_group_name"}", :class => "group_name" %>       
</div>


 def group_name_exists
     logger.info "giveHint #{params}"
     group_name = params[:group_name]
     group = Group.find_by_sql("SELECT DISTINCT gk1 FROM groups WHERE gk1 = '#{group_name}';")   
     if group.empty?
       succ = false         
     else
       succ = true
     end

     respond_to do |format|
       format.js { render :json => {:success => succ}}
     end

  end