#javascript #php #parameter-passing
#javascript #php #передача параметра
Вопрос:
<?php
if (defined('STDIN')) {
$path= $argv[1];
} else {
$path = $_GET['path'];
}
if( isset($path) amp;amp; ($path!==null) ) {
$local='/home/www/site/';
$fullpath = $local . $path;
var_dump(is_dir($fullpath));
}
?>
Если я вызываю его из консоли, он работает так, как и ожидалось: bool (true).
Вызывается через ajax с ошибкой:
$.ajax({
url: '../inc/is_dir.php',
data: { path: "a/b" },
dataType: 'text',
success: function (data) {
alert(data);
}
});
Комментарии:
1. убедитесь, что ваш ajax URL правильный?
2. Вы пытались сначала отладить самостоятельно? Вы сделали дамп
var_dump($_GET);
?3. Да, у меня есть. Я попробовал метод get и post. Выглядит хорошо, но оба метода дают сбой.
Ответ №1:
Поскольку вы используете относительный путь, проверьте вкладку network в devtools, на которую ../inc/is_dir.php
на самом деле указывает. Там вы также сможете увидеть, какого рода ошибку вы получаете (например, 404, 500 и т.д.)
Рассмотрите возможность использования абсолютного пути, например /inc/is_dir.php
. Вы не хотите, чтобы ваши вызовы ajax прерывались, если вы используете скрипт на другой странице.
Комментарии:
1. Я не получаю сообщения об ошибке. Я получаю bool (false), если я попробую это с ajax.
2. Я понимаю. Попробуйте добавить
contentType : "application/json"
к вашему ajax-запросу и обернуть{ path: "a/b" }
с помощьюJSON.stringify({ path: "a/b" })
3. зачем вам инкапсулировать строковые параметры в объект, а затем отправлять их через ajax, когда jquery передает ОБЪЕКТ с параметрами? я пробовал, но это не помогает.