Если AJAX возвращает true, сделайте что-нибудь

-2

Я использую вызов 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);
  • 1
    Во-первых, удалите async: false . Это действительно плохая практика, когда браузер выводит в консоль предупреждения о его использовании. Во-вторых, какова ценность data (и, следовательно, result ) - при условии, что вызов AJAX даже успешен. Попробуйте также проверить консоль на наличие ошибок.
  • 0
    Что такое данные JSON?
Показать ещё 6 комментариев
Теги:
get

1 ответ

0
Лучший ответ

Первое, что вам нужно определить, вы $ (это) 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");}}});
  • 0
    Это действительно работает, я думаю, была какая-то проблема с "этим". Спасибо, я надеюсь, что некоторые другие люди также могут извлечь уроки из этого. .)
  • 0
    пожалуйста, откажитесь от голосования @ JakaStudent7
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню