Передача данных из javascript в php-файл с помощью ajax не работает

#javascript #php #ajax

#javascript #php #ajax

Вопрос:

Когда я попытался использовать ajax для отправки данных из файла javascript в файл php, в файле php после использования ничего не отображалось

$_POST[‘пользовательский ввод’]

Вот файл javascript:

  searchBox.addListener('places_changed', function() {
        var places = searchBox.getPlaces();
        userinput = places[0].name.toString();  // Get user input from search box

        // Pass data to userinput.php via ajax
        $.ajax({
            url: 'userinput.php',
            data: {userinput : userinput},
            type: "POST",
            success: function (result) {
                alert(JSON.stringify(result));
            }
        });

    });
  

php-файл:

     if (isset($_POST)) {
        $servername = "localhost";
        $username = "XXXXXXX";
        $password = "XXXXXXXXX";
        $dbname = "CALIFORNIA";

        $city = $_POST['userinput']; // Nothing is posted here

        // Create connection
        $conn = new PDO("mysql:host=localhost;dbname=$dbname", $username, $password);
        $conn->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);


        $sql = $conn->prepare("SELECT State FROM  CITY as C WHERE   C.City_name=$city");
        $sql->execute();

        $result = $sql->fetchAll();
        $json = json_encode($result);
        echo $json;
    }
  

Я смог подключиться к базе данных mysql. Однако данные из файла javascript в php не были отправлены. Я не уверен, что делать с этого момента. значение $city ничего не выводит. На стороне клиента он распечатал пустой объект.

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

1. оповещение (userinput); и проверьте, что оно возвращает. это предупредит вас о вводе текста в поиске или нет?

2. data: {'userinput' : userinput}, пропущенные кавычки

3. Кавычки @Anant или без кавычек в этом случае ничего не меняют. Кавычки полезны только при задании имени ключа, которое указывает допустимый идентификатор JS (например: not-valid , из-за тире)

4. покажите нам значение userinput

5. var places = SearchBox.getPlaces(); userinput = places[0].name.toString(); изменение переменной userinput имеет правильное значение или нет

Ответ №1:

в вашей функции ajax попробуйте установить dataType свойство

 $.ajax({
            url: 'userinput.php',
            data: {'userinput' : 'userinput'},
            type: "POST",
            dataType: "text", // add this property
            success: function (result) {
                alert(JSON.stringify(result));
            }
        });
  

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

1. оказывается, что PHP больше не разрешает RAW_POST. хотя код в порядке

2. это может вам помочь. php.net/manual/en/reserved.variables.httprawpostdata.php