Показать сообщение отдельно
  #4 (permalink)  
Старый 09.12.2017, 22:18
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

У тебя на каждый onUpdated происходит ajax зпрос и как только он закончен, назначается ещё один обработчик onMessage, старый при этом никуда не девается. При этом возврат результата в хроме работает только для первого назначенного обработчика, остальные отрабатывают только внутри background ничего назад не передавая.
Т.е. через десять апдейтов у тебя висит десять одинаковых
chrome.extension.onMessage.addListener(function(request, sender,f_callback){
    if(request=='ContentScript'){ //проверяется, от того ли окна и скрипта отправлено
    alert("ВТОРОЙ АЛЕРТ   X="+x);  
    f_callback("X="+x); //обратное сообщение
   })

При этом каждый их них хранит в замыкании результат своего ajax вызова.
Не нужно так делать.)

Что тебе нужно, это:
chrome.extension.onMessage.addListener(function(request, sender,f_callback){
  if(request=='ContentScript'){ //проверяется, от того ли окна и скрипта отправлено
    $.ajax({ // Запрос к бд
      url:"http://mysite/background.php", // Запрос к бд
      type:"POST", // Запрос к бд
      data:{url:info.url}, // Запрос к бд
      dataType:"text", // Запрос к бд
      success: function(data){ // Ответ бд
        if (data.substring(0,4)=="true"){ // Если url есть в бд получает ответ от сервера
          var x = data.substring(data.indexOf("X")+1); // Достаю из ответа X
          f_callback("X="+x); //обратное сообщение
        }else{
          f_callback(false); //обратное сообщение      
        }
      }
    })
    return true
  }
})
без всяких onUpdate
__________________
29375, 35

Последний раз редактировалось Aetae, 09.12.2017 в 22:20.
Ответить с цитированием