AJAX по щелчку не вызывает / загружается, как должно

#ajax #jquery

#ajax #jquery

Вопрос:

Я изучал AJAX большую часть 2 часов, пытаясь разобраться, как заставить это работать, кажется, что он вызывает функцию, как будто я ввожу предупреждение, все работает нормально.

Я попытался использовать другой метод, и, похоже, он вызывал функцию самостоятельно, и она загружала то, что отображает страница .php.

Что я делаю не так, чтобы это вообще не работало?

 <script type="text/javascript">
$('a.fire').click(call_ajax);
function call_ajax() {
    $.ajax({
        type: "GET",
        url: "http://127.0.0.1/onlineshop/admin/scripts/test.php",
        dataType: "html",
        success: function(html){
            $("#holder").append(html);
        }
    });
}
</script>
 

Редактировать: я тоже только что попробовал

 $('a.fire').click(function() {
    $.ajax({
            type: "GET",
            url: "http://127.0.0.1/onlineshop/admin/scripts/test.php",
            dataType: "html",
            success: function(html){
                $("#holder").append(html);
            }
        });
});
 

Что также не работает.

РЕДАКТИРОВАТЬ: теперь у меня есть код, который получает нужный мне php-файл, но по какой-то причине делает это самостоятельно

 <script type="text/javascript">
function call_ajax() {
    $.ajax({
        type: "GET",
        url: "http://127.0.0.1/onlineshop/admin/scripts/test.php",
        dataType: "html",
        success: function(html){
            $("#holder").append(html);
        }
    });
}
 
 <script type="text/javascript">
 $(function() {

$(document).ready(function() {
$('a.fire').click(call_ajax());
    });
});
 

Проблема с этим кодом заключается в том, что он запускается сам по себе

РЕДАКТИРОВАТЬ: теперь у меня есть новый код, который пытается запустить в соответствии с консолью Firebug, но я получаю предупреждение ERROR: error, поэтому я понятия не имею, что происходит, чтобы он потерпел неудачу, я также перепробовал много разных URL-адресов без рабочего решения

 $('a.fire').click(function () {
    $.ajax({
        type: "GET",
        url: "/onlineshop/admin/scripts/test.php",
        dataType: "html",
        success: function(html){
            $("#holder").append(html);
        },
        error:function(xhr, text, error){
            alert("Error: "   text);
        }
    });
});
 

РЕШЕНО: теперь у меня все заработало! По какой-то причине у моего якоря был href «», что привело бы к перезагрузке страницы и удалению моего GET со страницы

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

1. В чем вопрос / проблема?

2. я в замешательстве, ваш запрос ajax запускается при call_ajax вызове?

3. Добавьте обратный вызов с ошибкой и отобразите все ошибки.

4. Извините, если я не понял, проблема в том, что на самом деле это не работает. Запрос ajax запускался ранее, когда этого не должно было быть, но теперь в этой форме он не будет запускаться при нажатии на мой якорь.

5. вызывается ли функция?

Ответ №1:

ajax будет работать только в том случае, если это тот же домен. Это означает, что если вы выполните jQuery из домена x в домен y, он не будет работать. Это сделано из соображений безопасности, чтобы предотвратить загрузку веб-сайтов с другого веб-сайта. Работает ли ваш вызов jQuery-ajax, если вы удалите 127.0.0.1 его из своего URL?

Кроме того, я думаю, вам следует добавить функцию щелчка внутри вашей $(document).ready(); функции, например:

 $(document).ready(function(){
   $('a.fire').click(function() {
      $.ajax({
        type: "GET",
        url: "onlineshop/admin/scripts/test.php",
        dataType: "html",
        success: function(html){
            $("#holder").append(html);
        }
      });
   });
});
 

в целях тестирования вы также можете использовать complete функцию внутри вашего ajax и оповещать свои данные. firebug также может быть полезен для поиска вашей проблемы 🙂

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

1. Firebug в Google Chrome, похоже, показывает, что он пытается получить страницу в соответствии с консолью, но он просто обновляет всю страницу по щелчку

2. чтобы предотвратить обновление страницы (это потому, что это a), вам лучше использовать span и придать ему соответствующий макет или сделать функцию щелчка return false; 🙂 предоставление a href="#" тоже будет работать 🙂

3. Не знаю, почему я не использовал href=»#», я думаю, это потому, что в прошлый раз он уничтожил мои текущие GET, понятия не имею, почему