jQuery — В чем здесь ошибка?

#jquery #html #ajax #json

#jquery #HTML #ajax #json

Вопрос:

Я работаю с функцией jQuery .get(), и у меня возникла очень странная проблема с ее использованием.

Вот интерфейс…

 <body>

<button title="minor">Minor Armor</button>
<br /><br />
<button title="medium">Medium Armor</button>
<br /><br />
<button title="major">Major Armor</button>
<br /><br />
<center>
    <div id="printout" style="border: 1px black dotted; height: 300px; width: 300px;">
    </div>
</center>

</body>
  

Вот функция, которую я пытаюсь использовать…

 $("button").click(function () {
            var v = "dnd_specific_armor_"   $(this).attr("title");
            alert(v   " was pressed.");
            $.get("randloot.php", { "table" : v }, function(data) {
                if(data.roll != 0) {    
                    alert(data.roll);
                    alert(data.armor);
                    alert(data.price);
                    $('#printout').text("Roll - "   data.roll
                                        "nArmor - "   data.armor
                                        "nPrice - "   data.price);
                }
                else
                    $('#printout').text("Oops");
            }, "json");
        });
  

Кнопки просто не будут реагировать на нажатия. Окно предупреждения не появляется, я ничего не получаю в своем поле div. Ответа вообще нет.

Забавно, однако, то, что если я удалю часть .get() и использую только это…

 $("button").click(function () {
            var v = "dnd_specific_armor_"   $(this).attr("title");
            alert(v   " was pressed.");             
        });
  

Тогда все работает нормально.

Я пытаюсь работать в Firefox 4, и я попытался вызвать консоль Java (которая даже не отображается) и консоль ошибок (которая не сообщает ни о каких ошибках). Итак, я вообще не могу понять, что происходит не так.

Есть предложения?

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

1. Запустите firebug и посмотрите, что он показывает.

2. В ваших строках отсутствуют $('#printout').text сочетания строк.

3. Вместо использования, alert() которое блокирует, рассмотрите возможность использования console.log() . Это приведет к записи в консоль Firebug или консоль Chrome JavaScript. Не уверен насчет поддержки других браузеров.

Ответ №1:

Ваш код содержит синтаксические ошибки.

                 $('#printout').text("Roll - "   data.roll
                                    "nArmor - "   data.armor
                                    "nPrice - "   data.price);
  

должно быть

                 $('#printout').text("Roll - "   data.roll  
                                    "nArmor - "   data.armor  
                                    "nPrice - "   data.price);
  

Кстати, проверка консоли ошибок тоже показала бы это — обычно это полезно сделать, прежде чем задавать вопросы здесь. 😉

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

1. 74% — это нормально, это <20%, о которых я беспокоюсь: D