使用Ajax jQuery函数$.post()
,我将jQuery
serialized()
表单数据发送到PHP函数,该函数在$_POST[]
单个$_POST['form_field']
变量为空的情况下成功接收到它。
在我的PHP函数中,print_r($_POST)
成功显示表单数据:
Array ( [action] => send_message [data] => modal_name=olivier&modal_email=olivier%40hotmail.com&modal_message=Hello+world )
然而$_POST['modal_name']
,$_POST['modal_email']
并且$_POST['modal_message']
是空的。为什么?
HTML:
<form id='contact'>
<input type='text' name='modal_name' id='modal_name' />
<input type='email' name='modal_email' id='modal_email' />
<textarea name='modal_message' id='modal_message'></textarea>
</form>
JS:
$('#contact').on('submit', function(e) {
e.preventDefault();
if (modal_name && modal_email && modal_message) {
var data = {
action: 'send_message',
data: $(this).serialize()
};
$.post(WPaAjax.ajaxurl, data, function(response) {
$('.modal').append(response);
});
}
});
用$(this).serializeArray()
代替$(this).serialize()
参考:-https :
//api.jquery.com/serializeArray/
两者之间的区别:
serializeArray
创建一个数组(不是“json数组”-没有这种东西);您可以使用测试自己console.log($("#myform").serializeArray())
。另一方面,serialize
创建要作为HTTP请求一部分的查询字符串。两种表示形式在某种意义上是等效的,即使用适当的代码,您可以毫无歧义地将一个转换为另一个。
两种版本均可用的原因是,serialize
当您只想发出HTTP请求(将结果放入查询字符串中)时serializeArray
更方便,而如果您要自己处理结果则更方便。
jQuery的AJAX方法不在乎您是否给它们一个,因为它们会检测参数的类型并将其转换为查询字符串(如果尚未输入),因此,从外部观察者发出的请求无法分辨出参数的原始格式。
您需要执行以下操作:-
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id='contact'>
<input type='text' name='modal_name' id='modal_name' />
<input type='email' name='modal_email' id='modal_email' />
<textarea name='modal_message' id='modal_message'></textarea>
<input type="submit" value = "submit">
</form>
<script type="text/javascript">
$('#contact').on('submit', function(e) {
e.preventDefault();
if (modal_name && modal_email && modal_message) {
var data = $(this).serializeArray();
data.push({name: 'action', value: 'send_message'});
$.post('query.php', data, function(response) {
$('.modal').append(response);
});
}
});
</script>
并在php中:-
<?php
if(!empty($_POST)){
echo "<pre/>";print_r($_POST);
}
?>
它将输出如下:
<pre/>Array
(
[modal_name] => sdsadsa
[modal_email] => a@gmail.com
[modal_message] => sadada
[action] => send_message
)
注意:-如果只想使用,serialize()
请执行以下操作:-
<script type="text/javascript">
$('#contact').on('submit', function(e) {
e.preventDefault();
if (modal_name && modal_email && modal_message) {
var data = $(this).serialize()+ '&action=send_message';
$.post('query.php', data, function(response) {
$('.modal').append(response);
});
}
});
</script>
主要内容:$_POST 变量,何时使用 method="post"?,PHP $_REQUEST 变量在 PHP 中,预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。 $_POST 变量 预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。 从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。 注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 M
问题内容: 使用,我可以将其发送到PHP页面。现在如何在PHP中反序列化它?它已在jQuery中序列化。 问题答案: 您无需从jquery 方法反序列化PHP中的任何内容。如果对数据进行序列化,则如果使用GET方法ajax请求,则应将其作为查询参数发送给PHP;如果使用POST ajax请求,则应将其作为vars发送。因此,在PHP中,您将访问类似或取决于请求类型的值。 该方法仅采用表单元素并将其
问题内容: 我正在尝试使用Python填写并提交表单,但无法检索结果页面。我已经尝试过机械化和urllib / urllib2方法来发布表单,但是都遇到了问题。 我要检索的表单在这里:http: //zrs.leidenuniv.nl/ul/start.php。该页面以荷兰语显示,但这与我的问题无关。可能值得注意的是,表单操作重定向到http://zrs.leidenuniv.nl/ul/quer
问题内容: 表单发送AJAX代码: HTML表单: 在我的PHP中: 如何在PHP端访问每个box变量值? 问题答案: 您的js应该是这样的: 使用php,您应该循环结果数组。 编辑: 您必须在jQuery中使用serializeArray函数。然后它将与此代码一起工作。
本文向大家介绍PHP利用超级全局变量$_POST来接收表单数据的实例,包括了PHP利用超级全局变量$_POST来接收表单数据的实例的使用技巧和注意事项,需要的朋友参考一下 利用$_POST超级全局变量接收表单的数据,然后利用echo输出到页面。 下面是代码: 输出内容使用post方式提交数据,然后用$_POST['fname'];接收数据赋值到$name的全局变量中, 然后用echo输出$name
问题内容: 用户提交搜索表单后,我想展示一个新视图。我以与其他视图相同的方式进行此操作,但不幸的是,这次没有任何反应,我无法从应用程序路线中检索内容。(所以这个问题是不是重复这个我写的东西到表单中的问题,只有提交表单后,它完美的作品在所有其他情况下发生的问题。),提交它,然后在浏览器的URL变化,但视图不会改变。我几乎可以肯定这是因为and搜索语句中的内容,但是不知道如何在Python代码中处理它