Синтаксис для получения переменных PHP в jQuery Ajax

У меня есть функция php:

<?php
function send_message($userid, $projectid, $message) {
    //some code
}

$userid = '1';
$projectid = '2';
$message = 'hello';
?>
<form id = "myform" method = "post" action = "">
    <textarea name = "message" id = "project-message"></textarea>
    <input type = "submit" name = "send" value = "send message">
</form>

Я хочу, чтобы кнопка отправки выполняла jQuery Ajax, чтобы моя страница не обновлялась:

js:

 $('#myform').on('submit',function(e) {

        e.preventDefault();

        $.ajax({
            url: //my valid url,
            type: 'post',
            dataType : 'json',
            data: { 
                action: 'send_message', //this is the PHP function
                projectid: projectid //how do I write this?,
                userid: userid //how do I write this?,
                message: message//how do I write this?'
            },
        })

        .done(function(data) { console.dir(data);; })
        .fail(function(jqXHR) { alert('You are fail. ' + jqXHR); });

    });

В моем error.log я получаю NULL для 3 параметров, потому что я не уверен, как получить к ним доступ с моего PHP. Как вы получаете доступ к переменным PHP из jQuery?

Где у вас есть данные: { это должно быть примерно так: успех: функция (данные) {, и проверьте правильность вашего URL-адреса... и я не думаю, что это действие прямо здесь...

mindmaster 21.02.2019 01:32

ЕСЛИ ваш jquery находится на той же странице, что и PHP, просто повторите их в правильном положении, иначе поместите их в скрытые входы

Second2None 21.02.2019 04:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
55
3

Ответы 3

  1. Поместите свои переменные PHP в скрытые входы, чтобы они автоматически отправлялись при отправке. Например: <input type = "hidden" name = "userid" value = "1">

  2. Сериализация данных формы: var formData = $(form).serialize();

  3. При отправке прикрепите данные формы:

$.ajax({ url: admin_ajax.ajax_url, type: 'POST', data: formData })

  1. Доступ к нему из PHP классическим способом: $_POST['userid']

а как насчет моего действия: 'send_projectmessage'? Это моя функция PHP, которой нужны formData в качестве параметров. Как записать их вместе в данные: {}

Rollor 21.02.2019 01:59

var formData = $(form).serialize() + "&moredata = " + morevalue

PHPnoob 21.02.2019 02:02

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

<form id = "myform" method = "post" action = "" id='form1'>
    <textarea name = "projectMessage" id = "project-message"></textarea>
    <input type = "submit" name = "send" value = "send message">
    <?php print "<input type='hidden' value='$userid' > "; name='userid' ?>
    <?php print "<input type='hidden' value='$projectid' > "; name='projectid' ?>
    <?php print "<input type='hidden' value='$message' > "; name='message' ?>
</form>

$('#myform').on('submit',function(e) {

        e.preventDefault();

        $.ajax({
            url: admin_ajax.ajax_url,
            type: 'post',
            dataType:'json',
            data: $("#form1").serialize(),
        })

        .done(function(data) { console.dir(data);; })
        .fail(function(jqXHR) { alert('You are fail. ' + jqXHR); });

    });

Мне нравится этот подход, потому что я могу повторно использовать ajax несколько раз или даже создать общую функцию для отправки формы в фоновом режиме с помощью ajax. Также я могу заполнить форму, используя для каждого цикла в php, имея все значения в массиве (например, результат базы данных)

бывший.

<?php
foreach($values as $k=>$v}{
     print "<input name='$key' value='$v'>\n";
}
?>

<form id = "insert_form">
<textarea name = "message" id = "project-message"></textarea>
<input type = "submit" name = "send" id = "send" value = "send message">
<input type = "hidden" name = "userid" id = "userid" value = "<?php echo $userid= '1'; ?>">
<input type = "hidden" name = "projectid" id = "projectid" value = "<?php echo $projectid='2'; ?>">
<input type = "hidden" name = "message" id = "message" value = "<?php echo $message= 
'hello'; ?>">
</form>

var project-message=document.getElementById('project-message').value;
var send=document.getElementById('send').value;
var userid=document.getElementById('userid').value;
var projectid=document.getElementById('projectid').value;
var message=document.getElementById('message').value;
 $.ajax({
url:"your_url.php",
 type:"POST",
data:$('#insert_form').serialize(),
success:function(data)
{
}
})

Несколько слов, объясняющих ваше решение, а также некоторое форматирование кода, сотворили бы здесь чудеса!

chisaipete 23.02.2019 02:03

Другие вопросы по теме