#javascript #jquery
#javascript #jquery
Вопрос:
function getNewMessages(id)
{
clearJqGrid();
var lat;
var lng;
var jsonData;
var geocoder = new google.maps.Geocoder();
var miles = $('#milesAway').val();
// find what the user is locating by
if ($('#zipCode').is(':visible'))
{
var zipText = $('#zipCode').val();
if (isValidUSZip(zipText))
{
geocoder.geocode( { 'address': zipText}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
map.setCenter(results[0].geometry.location);
} else {
alert("Zip Code couldn't be located.");
}
});
}
else
{
alert('Please enter a valid US zip code.');
}
}
else if ($('#cityState').is(':visible'))
{
var address = $('#cityState').val();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
map.setCenter(results[0].geometry.location);
} else {
alert("City/State combination couldn't be found.");
}
});
}
else
{
var latlng = map.getCenter();
lat = latlng.lat();
lng = latlng.lng();
jsonData =
{
latitude: lat,
longitude: lng,
milesAway: miles
}
}
$.ajax(
{
type: "POST",
url: "<%= Url.Action("CalcLocation", "Home") %>",
data: jsonData,
success: function (result) {
var messages = resu<
for(var i=0;i<messages.length;i )
jQuery("#responseMessages").jqGrid(
'addRowData',
i 1,
{distance:messages[i].distance,age:messages[i].age,message:messages[i].message}
);
},
error: function (error) {
}
});
}
Таким образом, вызов AJAX выполняется только в том случае, если он проходит через ‘else’ часть оператора if, а не остальные. Почему?
Комментарии:
1. В вашем назначении jsonData отсутствует точка с запятой в конце, но это не должно делать то, что вы говорите. Параметр url вашего ajax-вызова также неправильно использует кавычки (вам нужны одинарные кавычки снаружи или внутри, нельзя использовать один и тот же тип как внутри, так и снаружи). Выдает ли это какие-либо ошибки при загрузке в Chrome или Firefox? Проверьте консоль ошибок.
2. никаких ошибок при загрузке, а после ‘else’ она выполняется нормально и работает безукоризненно
Ответ №1:
Я полагаю, Milimetric на самом деле все правильно понял — вам не хватает точки с запятой в вашем jsonData
определении литерала объекта. Это в сочетании с автоматической вставкой точки с запятой в JavaScript и тем, как ваши фигурные скобки {}
записываются так, чтобы начинаться с новой строки, весьма вероятно, является проблемой. Поставьте там точку с запятой, и все должно работать нормально.
В других C-подобных языках размещение открывающей фигурной скобки на новой строке или в той же строке является личным предпочтением, но в JavaScript это имеет значение, и поэтому я бы порекомендовал вам приложить сознательные усилия, чтобы поместить открывающие фигурные скобки в ту же строку.