Синтаксис для получения переменных PHP в jQuery Ajax - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть функция 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?

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

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

<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 или даже создать универсальную функцию для отправки формы на заднем плане.с аяксом.Также я могу заполнить форму, используя для каждого цикла в php, имея все значения в массиве (например, результат базы данных)

ex.

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

0 голосов
/ 21 февраля 2019
<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)
{
}
})
0 голосов
/ 21 февраля 2019
  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 })

Доступ к нему из PHP классическим способом: $_POST['userid']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...