JQuery AJAX каталог публикации - PullRequest
1 голос
/ 22 февраля 2011

Я пытаюсь опубликовать ajax-запрос следующим образом:

$.ajax({
            url: 'directory/file.php',
            type: 'POST',
            data:   'param1=' + param1 + '&param2=' + param2,
            success: function(response){
                $('#content').html(response);
            }
}); 

Запрос POST не работает, когда я использую этот фрагмент кода, но если я переместу файл на один каталог вверх и использую:

$.ajax({
            url: 'file.php',
            type: 'POST',
            data:   'param1=' + param1 + '&param2=' + param2,
            success: function(response){
                $('#content').html(response);
            }
}); 

Тогда это волшебным образом работает.

Я пробовал:

/ directory / file.php и полный путь / directory / file.php

Я также включил полный путь, когда переместил его на один каталог, и он все еще работал.

Должно быть, я смотрю на что-то простое, но не могу понять.

Ответы [ 4 ]

2 голосов
/ 03 марта 2013

У меня недавно была такая же проблема.После игры с использованием рекомендованного выше Firebug (ура, кстати!) Я понял, что проблема заключается в файле .php, а не в javascript.Когда я переместил php-файл на одну папку вниз, он больше не обращался к тем же папкам и файлам, как на один уровень вверх.

Надеюсь, это избавит кого-то от головной боли, у меня была последняянесколько часов!

1 голос
/ 23 февраля 2011

Нет ничего плохого в этом блоке кода, поэтому проблема должна быть в другом месте. При работе на AJAX, если что-то не работает правильно, вот набор шагов, которые я обычно предпринимаю для выяснить, где проблема. Многое это скорее очевидно, но я обнаружил, что ничего не принимаю как должное и систематическая проверка каждого в свою очередь, как правило, поможет мне решить проблему быстро. Наконец, я буду вообще ссылаться используя Firebug, потому что это мой инструмент выбора, но вы могли бы выполнить большинство из них с помощью других инструментов так же легко.

Во-первых, при работе с кодом AJAX у меня всегда открыт Firebug. Загрузите страницу и убедитесь, что нет синтаксиса JavaScript ошибки на самой странице, которые могут мешать обработчикам событий от проводки и т. д.

Далее я бы изменил код, который вы дали, чтобы он был следующим:

alert('Running AJAX request');
$.ajax({
            url: 'directory/file.php',
            type: 'POST',
            data:   'param1=' + param1 + '&param2=' + param2,
            success: function(response){
                alert('Response received: ' + response);
                $('#content').html(response);
                alert('Document modified.');
            },
            error: function(req) {
                alert('Error: ' + req.status);
            }
}); 

Теперь, когда вы запускаете запрос AJAX, вы должны получить много информация, которая скажет вам, где в процессе чего-то есть споткнулся.

Если вы не видите «Выполнение AJAX-запроса», проверьте обработчики событий которые должны вызывать ваш запрос. Если ты видишь «Ошибка:», затем убедитесь, что URL-адрес запроса был таким, как вы ожидали и что ручной просмотр этого URL дает ожидаемый результат.

Если вы видите «Ответ получен:», но текст ответа не что вы ожидаете, снова попробуйте перейти на страницу вручную в вашем браузер. Если есть разница между тем, что вы видите в браузер и то, что видит запрос AJAX, используйте сеть Firebug вкладка, чтобы проверить различия между параметрами вашего браузера и запрос AJAX отправляется (например, возможно, вам нужно добавить идентификатор сеанса в запросе AJAX).

Если все это работает, но модификация документа - нет произойдет, как и ожидалось, затем используйте вкладку DOM Firebug, чтобы убедиться, что идентификаторы документов совпадают между DOM и сценарием, и проверить DOM, чтобы увидеть, какие изменения на самом деле происходят как результат вашей строки $ ('# content'). html (response).

1 голос
/ 22 февраля 2011

Попробуйте использовать откат "error" метода $ .ajax и вернуть код состояния в нем.

$.ajax({
            url: 'directory/file.php',
            type: 'POST',
            data:   'param1=' + param1 + '&param2=' + param2,
            success: function(response){
                $('#content').html(response);
            },
            error: function(req, status, error) {
                       window.alert( req + "\n" + status + "\n" + error );
                   }
}); 

Возможно, проблема в вашем chmod в этом каталоге, который долженбыть не менее 755 (все, но только группа и владелец могут писать).В этом случае jQuery должен вернуть 403-HTTP-код состояния.

Это может помочь найти ошибку.

0 голосов
/ 22 февраля 2011

Я попробовал ваш код, используя jquery 1.4.2. Он работал нормально. Поэтому, за исключением, может быть, у вас нет прав доступа к этой папке или вы перепутали структуру каталогов тем или иным способом.

Попробуйте вставить в свой URL-адрес функцию $ .ajax в своем браузере и посмотрите, работает ли она.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...