Ответ 1
Получил это. Проблема заключалась в отсутствии "var" перед объявлением статуса.
Как указано ниже, @bfavaretto, статус уже определен как глобальная переменная. Поэтому, если бы я использовал переменную с именем "ajax_status", мне было бы хорошо без var или я мог бы использовать имя переменной "status", но мне пришлось бы сделать ее локальной (с использованием var).
Следующий код работает как чемпион в FF и Chrome.
$form = $("#form2")
var str = $form.serialize();
var status = true; // <--- change 1 - use "var"
$.ajax({
type : 'POST',
url : 'check_zip.php',
data : str,
async : false,
success : function (data) {
obj = JSON.parse(data);
var result = obj.result;
status = result;
},
error : function (msg) {
alert(msg);
status = false;
}
});
if (status === false) { // <-- change 2 - just use boolean comparison
...
Другим способом кодирования этого будет
var ajaxreturn = $.ajax({
type : 'POST',
url : 'check_zip.php',
data : str,
async : false,
success : function (data) {
},
error : function (msg) {
alert("Unexpected server response on zip validation");
}
});
var status = false;
try {
obj = JSON.parse(ajaxreturn.responseText);
status = obj.result;
} catch (e) {
status = false;
}
if (status === false) {
...
и, вероятно, лучшей практикой было бы не повторно использовать существующее имя имени переменной, поэтому, используя второй пример, это даст
var ajaxreturn = $.ajax({
type : 'POST',
url : 'check_zip.php',
data : str,
async : false,
success : function (data) {
},
error : function (msg) {
alert("Unexpected server response on zip validation");
}
});
var check_status = false;
try {
obj = JSON.parse(ajaxreturn.responseText);
check_status = obj.result;
} catch (e) {
check_status = false;
}
if (check_status === false) {
...