我有一个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变量?
答案 0 :(得分:0)
将您的PHP变量放入隐藏的输入中,以便它们在提交时自动发送。
例如:<input type="hidden" name="userid" value="1">
序列化表单数据:var formData = $(form).serialize();
提交时,请附上您的表单数据:
$.ajax({
url: admin_ajax.ajax_url,
type: 'POST',
data: formData
})
$_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)
{
}
})