JQuery не вызывает php - PullRequest
       3

JQuery не вызывает php

3 голосов
/ 04 мая 2011

По какой-то причине jQuery не загружает мой php-файл.Кнопка нажата, и страница просто обновляется.Я проверил, работает ли jQuery и работает ли функция щелчка.Как только он достигает $.post, он, кажется, не вызывает этот файл, проходит паузу и выводит результат.Каталог правильный для файла php.Я в растерянности.Есть идеи?

// HTML Code    
<input id="doit" class="medium blue button" type="submit" name="doit" value="Sign in">

//jQuery code:
$('#doit').click(function(){
    $('#fullscreen').show();
    $.post('./delete-misc/test-ajax-code.php', function(data){
         $('#fullscreen').hide();
         alert(data);
    })
});

// Php code (test-ajax-code.php)
<?php
    sleep(10);
    echo "Done";
?>

Ответы [ 6 ]

3 голосов
/ 04 мая 2011

Попробуйте удалить точку из начала URL.

$.post('/delete-misc/test-ajax-code.php', ...

Я не могу дать вам подробное объяснение того, как именно точка в пути URL работает именно из-за недостатка опыта, но я будусделайте это вики-сообществом, чтобы позволить кому-то объяснить это.

РЕДАКТИРОВАТЬ: Я задал вопрос по этой теме, ответы отличные: Что означает точка вURL

2 голосов
/ 04 мая 2011

Изменить тип кнопки.
Итак, вместо этого:

<input id="doit" ... type="submit" ... />

Вы должны иметь это:

<input id="doit" ... type="button" ... />

Почему? Потому что кнопка «Отправить» инициирует отправку формы, которая переходит на другую страницу. Но кнопка ничего не делает, а только то, что вы запрограммировали (с помощью js).

Другим решением является предотвращение поведения по умолчанию нажатия кнопок в javascript, поэтому вы должны иметь:

$('#doit').click(function(){
    $('#fullscreen').show();
    $.post('./delete-misc/test-ajax-code.php', function(data){
         $('#fullscreen').hide();
         alert(data);
    });
    return false; //This does the trick!!!
});

Почему? возвращение false внутри события jquery отменяет поведение по умолчанию, поэтому форма не отправляется

Надеюсь, это поможет. Приветствия

1 голос
/ 04 мая 2011

Вам необходимо вернуть false в вашем обработчике отправки.Если вы этого не сделаете, форма будет отправлена, как обычно, после того, как ваш обработчик вернется.

1 голос
/ 04 мая 2011

Попробуйте изменить тип кнопки:

<input id="doit" class="medium blue button" type="button" name="doit" value="Sign in">
0 голосов
/ 04 мая 2011

удалите атрибут имени для кнопки отправки и попробуйте.У меня была похожая проблема некоторое время назад, удаление атрибута имени было хитростью.(когда я отправлял опубликованные данные через jQuery, мне не понадобился атрибут name).

Мне все еще интересно, почему это сработало тогда?

0 голосов
/ 04 мая 2011

Вы только что забыли ; после окончания $.post;).

Попробуйте, это лично работает:

            $('#doit').click(function(){
                $.post('./delete-misc/test-ajax-code.php', function(data){
                     alert(data);
                });
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...