Прошло некоторое время с тех пор, как я прикасался к jQuery (на самом деле, несколько лет назад), поэтому, пожалуйста, простите за незнание.

Я не могу заставить работать следующий базовый пост jQuery в PHP-скрипт:

<!DOCTYPE html>
<html><body>
<form id="formID">
    <input name="name" type="text" id="name">
    <input name="email" type="text" id="email">
    <input name="mobile" type="text" id="mobile">
    <div id="submitButton">Submit</div>
    <div id="result"></div>
</form>

<script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
<script>
        $("#submitButton").click(function(e) {
            e.preventDefault();
            $.ajax({
                type: "POST",
                url: "/fupload",
                /*data: $("#formID").serialize(),*/
                data: {name: "bob"},
                success: function(resp) {
                    //$('#result').html(resp);
                    console.log(resp);
                }
        });
    });
</script>
</body></html>

И скрипт /fupload/index.php:

<?php

$idInfo = "[ " . $_POST['name'] . ':' . $_POST['email'] . ':' . $_POST['mobile'] . " ]";
echo $idInfo;
return;

Переменные PHP $ _POST не определены (согласно выводам консоли). Использование serialize () для фактических данных формы также приводит к тому, что переменные $ _POST не определяются. Если я перейду на метод GET, он будет работать, но мне нужно опубликовать.

Буду признателен за любые указатели на то, какую глупую ошибку я совершаю.

Благодарность

1
Henry 8 Сен 2016 в 17:30

3 ответа

Лучший ответ

Добавьте / после /fupload следующим образом:

url: "/fupload/",

Это правильно запустит ваш код. Если вы не используете / в конце, в ваш php-скрипт будет отправлен неверный запрос. Поскольку значения почтового запроса также отправляются с использованием строки запроса.

Полный код:

<script>
    $("#submitButton").click(function(e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "/fupload/",
            /*data: $("#formID").serialize(),*/
            data: {name: "bob"},
            success: function(resp) {
                //$('#result').html(resp);
                console.log(resp);
            }
    });
});
</script>
0
Neel Ion 8 Сен 2016 в 16:07

Настройки ajax должны быть method, а не type

$.ajax({
    method: "POST", 
  //^^^^^---- here you have defined as type   
    .......
})
0
bipen 8 Сен 2016 в 14:35

Получить $ _POST этим

$dataString = $_POST['datapost'];
parse_str($dataString, $dataArray); print_r($dataArray);
0
onlinewebsite 8 Сен 2016 в 15:28