Ошибка: недопустимая инициализация переменной

#javascript #jquery #ajax

#javascript #jquery #ajax

Вопрос:

Я должен вызывать функцию только при вызове ajax success .

Код:

 <script>
    function removeFromCart(id) {
        var value = "";
        for(var i=0; i<id.length; i  )
            if(!isNaN(id[i]))
                value  = id[i];
        $.ajax({
            type: "POST",
            url: "http://url.com/removefromcart.php",
            data: "id=" value,
            success: function(response){
                afterRemove(response);
            }
        });
    }

    function afterRemove(response) {
        if(response[0] == "r") {
            var prezzo = "";
            for(var i = 1; i<respose.length; i  )
                var prezzo  = response[i];
            document.getElementByid("prezzo").innerHTML = prezzo ".00 amp;euro;";
            $("#segnale" value).fadeOut();
        }
    }
</script>
  

Проблема в том, что Firebug выдает мне эту ошибку при загрузке страницы:

 invalid variable initialization: var prezzo  = response[i];
  

Это потому, что afterRemove функция вызывается при загрузке страницы, а не только при успешном выполнении ajax. Как это можно исправить?

Комментарии:

1. Вы написали respose вместо response в своей for инициализации.

2. Просто К вашему сведению, будьте последовательны; не смешивайте запросы jQuery ( $("#segnale" value) ) и не-jQuery ( document.getElementByid("prezzo") ). Запросы, отличные от jQuery. $("#prezzo").html(prezzo ".00 amp;euro;");

Ответ №1:

вы определяете / var переменную prezzo дважды

 var prezzo = ""; // <-- here
for(var i = 1; i<respose.length; i  )
    var prezzo  = response[i]; // <-- and here
  

Ответ №2:

 var prezzo  = response[i]
  

Это недопустимо, потому что var prezzo означает, что вы создаете новую переменную с именем prezzo . Затем вы пытаетесь добавить к этой переменной. Вы не можете добавить к переменной, которая является совершенно новой, потому что у нее еще нет значения. Просто отбросьте var .

Ответ №3:

 var prezzo  = response[i];
  

Эта строка не имеет смысла. a = b означает a = a b .

В вашем случае вы делаете, var prezzo = response[i]; что var prezzo = prezzo response[i]; и есть. prezzo еще не существует (потому что вы объявляете его прямо там), поэтому вы не можете добавить к его значению, потому что у него нет значения (пока).

(Кроме того, это неверный синтаксис)

РЕДАКТИРОВАТЬ: я заметил, что вы объявили var prezzo = ""; ранее, поэтому просто удалите var :

 prezzo  = response[i];
  

Это должно выглядеть как:

 var prezzo = "";
   for(var i = 1; i<response.length; i  )
      prezzo  = response[i];
  

Ответ №4:

если вы инициализируете переменную при выполнении . вы всегда будете получать ошибку…

 function afterRemove(response) {
    if(response[0] == "r") {
        var prezzo = "";
        for(var i = 1; i<respose.length; i  )
             prezzo  = response[i];
        document.getElementByid("prezzo").innerHTML = prezzo ".00 amp;euro;";
        $("#segnale" value).fadeOut();
    }
}