使PHP变量进入jQuery Ajax的语法

时间:2019-02-21 00:22:22

标签: 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,因为我不确定如何从PHP中访问它们。您如何从jQuery访问PHP变量?

3 个答案:

答案 0 :(得分:0)

  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']

答案 1 :(得分:0)

您可以获取表单的所有值,然后提交。 您还可以将表单中的其他值设置为隐藏。

<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中的for每个循环来填写表格,将所有值都放在一个数组中(例如数据库结果)

例如。

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

答案 2 :(得分:0)

<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)
{
}
})