путь как параметр — вызов ajax

#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 передает ОБЪЕКТ с параметрами? я пробовал, но это не помогает.