Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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
使用javascript提交rails表单_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

使用javascript提交rails表单

使用javascript提交rails表单,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我有以下表格: <% category.child_categories.sort_by(&:name).each do |child_category| %> <%= form_tag (search_path), :method => "get", class: "search-form" do %> <label for="checkData" style="cursor: pointer;" class="sear

我有以下表格:

 <% category.child_categories.sort_by(&:name).each do |child_category| %>
     <%= form_tag (search_path), :method => "get", class: "search-form" do %>
         <label for="checkData" style="cursor: pointer;" class="search">
           <%= hidden_field_tag :shop_search, child_category.id %>
             <i class="fas fa-search"></i> <%= child_category.name %>
          </label>
     <%= submit_tag '', :style => "display: none;" %>
     <% end %>
 <% end %>

当cookies[:coordinates]不存在时,我必须首先创建cookie,然后触发
函数setGeoCookie
中的表单。但由于一些奇怪的原因,表格没有提交。知道我可能做错了什么吗?

在函数
$中(这个)
有另一个作用域。在执行函数之前尝试存储表单。那就行了

$(".search").click(function(e){
    var form = $(this).parent('form.search-form')
    <% if cookies[:coordinates].blank? %>
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(setGeoCookie, displayError);
        } else {
            alert("Geolocation is not supported by the browser you are currently using. Supported browsers: Chrome 5.0, Firefox 3.5, Internet Explorer 9.0, Opera 10.60, Safari 5.0");
        }


    function setGeoCookie(position) {
        let cookieName = "coordinates";
        let now = new Date();
        let time = now.getTime();
        time += 3600 * 5000;
        now.setTime(time);
        let cookie_val = position.coords.latitude + "|" + position.coords.longitude;
        document.cookie = cookieName +"=" + cookie_val + '; path=/';
        form.trigger('submit.rails');
    }


    function displayError(error) {
        let errors = {
            1: 'error',
            2: 'Position unavailable',
            3: 'Request timeout'
        };
        alert("Error: " + errors[error.code]);
        window.location.reload(true)

    }
    getLocation();
    <% else%>
    form.trigger('submit.rails');
    <% end %>
});
$(“.search”)。单击(函数(e){
var form=$(this.parent('form.search form'))
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(setGeoCookie,displayError);
}否则{
警报(“您当前使用的浏览器不支持地理位置。支持的浏览器:Chrome 5.0、Firefox 3.5、Internet Explorer 9.0、Opera 10.60、Safari 5.0”);
}
函数setGeoCookie(位置){
让cookieName=“坐标”;
让我们现在=新日期();
让time=now.getTime();
时间+=3600*5000;
现在。设置时间(time);
让cookie_val=position.coords.latitude+“|”+position.coords.longitude;
document.cookie=cookieName+“=”+cookie_val+”;路径=/”;
form.trigger('submit.rails');
}
函数显示错误(错误){
让错误={
1:'错误',
2:‘职位不可用’,
3:'请求超时'
};
警报(“错误:+错误[错误代码]);
window.location.reload(true)
}
getLocation();
form.trigger('submit.rails');
});

谢谢@Archer的帮助。。。它很好用!:))
$(".search").click(function(e){
    var form = $(this).parent('form.search-form')
    <% if cookies[:coordinates].blank? %>
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(setGeoCookie, displayError);
        } else {
            alert("Geolocation is not supported by the browser you are currently using. Supported browsers: Chrome 5.0, Firefox 3.5, Internet Explorer 9.0, Opera 10.60, Safari 5.0");
        }


    function setGeoCookie(position) {
        let cookieName = "coordinates";
        let now = new Date();
        let time = now.getTime();
        time += 3600 * 5000;
        now.setTime(time);
        let cookie_val = position.coords.latitude + "|" + position.coords.longitude;
        document.cookie = cookieName +"=" + cookie_val + '; path=/';
        form.trigger('submit.rails');
    }


    function displayError(error) {
        let errors = {
            1: 'error',
            2: 'Position unavailable',
            3: 'Request timeout'
        };
        alert("Error: " + errors[error.code]);
        window.location.reload(true)

    }
    getLocation();
    <% else%>
    form.trigger('submit.rails');
    <% end %>
});