我正在向我的用户添加客户端地理编码,因此我不会在我的服务器上吃掉一堆api调用。我通过在我的新用户中为经度和纬度添加隐藏字段来实现此目的,并且每当表单更改时jquery都会更新这些隐藏字段。
出于某种原因,当我点击提交按钮时,我的浏览器不再执行任何操作。服务器说它重定向到用户,并且我的所有资产都被渲染。但浏览器并没有做任何事情。没有错误,没有。刷新后,我可以看到我已经在新用户下登录了。我的控制器测试所有通过。
我认为这是我的js的问题,但是当我注释掉代码并手动输入坐标时,同样的事情发生了。
这曾经发生在任何人身上吗?有任何想法吗?感谢。
修改
以下是观点:
<%= form_for(@user, remote: true) do |f| %>
<div class="col-md-9 col-md-offset-1">
<div class="input-group", id="address-info">
<%= f.text_field :street, placeholder: 'Street Address', class: 'form-control' %>
<%= f.text_field :city, placeholder: "City", class: 'form-control' %>
<%= f.select :state, us_states, {}, class: 'form-control' %>
</div>
<%= f.hidden_field :latitude, id: "lat" %>
<%= f.hidden_field :longitude, id: 'lng' %>
<%= f.submit :Submit, class: 'btn btn-primary form-control' %>
</div>
<% end %>
和我的js:
$(document).ready(function(){
$('#address-info').change( function () {
codeAddress()
});
})
function codeAddress() {
geocoder = new google.maps.Geocoder()
var address = $('#user_street').val() + ", " + $('#user_city').val() + ", " + $('#user_state').val();
geocoder.geocode( { 'address': address}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat()
var lng = results[0].geometry.location.lng()
$('#lat').val(lat)
$('#lng').val(lng)
} else {
console.log("error" + status);
}
})
}
我删除了一些不相关的代码。