Я использую вызов AJAX для получения некоторых данных из файла PHP в формате JSON и в отношении того, истинна ли часть этих данных, я хочу изменить цвет моего элемента.
Я пробовал делать это, как будто он говорит здесь (async:false
): Отправить форму, если ajax validator возвращает true, используя jquery
Но он не работает так, как должен.
$.ajax({
url: 'preveri.php',
data: {
"row": row,
"col": col
},
type: 'GET',
dataType: 'json',
async: false,
success: function( data ){
var jsonstuff = data;
var trys = data.trys[0];
var result = data.result[0];
var finished = data.finished[0];
if (result == "true") {
$(this).attr("style", "background-color: green");
} else {
$(this).attr("style", "background-color: red");
}
}
});
Я попытался использовать это перед вызовом AJAX, поэтому он определенно работает:
$(this).attr("style", "background-color:red");
Я также попытался заменить this
идентификатором элемента, и он также не работал. Я также попытался сделать result
глобальной переменной и вызывать if-else после ajax.
Данные JSON в PHP:
$data = array();
$data['result'] = array($Result);
$data['trys'] = array($trys);
$data['finished'] = array($finished);
$myJSON = json_encode($data);
Первое, что вам нужно определить, вы $ (это) golbal и попробуйте под кодом
var this_var =$(this);
$.ajax({
url: 'preveri.php',
data: {"row": row,"col": col},
type: 'GET',
dataType: 'json',
success: function( data ){
var jsonstuff = data;
var trys = data.trys[0];
var result = data.result[0];
var finished = data.finished[0];
if (result == "true") {this_var.css("background-color","green");} else {this_var.css("background-color","red");}}});
async: false
. Это действительно плохая практика, когда браузер выводит в консоль предупреждения о его использовании. Во-вторых, какова ценностьdata
(и, следовательно,result
) - при условии, что вызов AJAX даже успешен. Попробуйте также проверить консоль на наличие ошибок.