为什么isset($ _ POST ['submit1'])等于FALSE?

时间:2013-08-20 06:13:19

标签: php post isset

这是我几小时前发布的另一个问题(PHP post method apparently not working)的后续跟进。 代码仍然没有做它应该做的事情,但代码和问题本身已经发生了很大变化,我更愿意发布一个新问题(同时考虑到问题似乎主要是在发布后立即阅读)。我会尝试关闭之前的问题(这里仍然有点新)。

接下来的问题:为什么在下面给出的代码中,isset($ _ POST ['submit1'])在测试时等于FALSE?换句话说,为什么$ _POST ['submit1']等于NULL? 我相信这就是我需要知道的全部。

这是代码,由两个文件组成。文件'form.php'(几乎从jQuery-site复制:http://www.visualjquery.net/category/Ajax/jQuery.post,见上一个例子)包含以下代码:

<!doctype html>
<html lang="en">

<head>
<meta charset="utf-8">
<title>jQuery.post demo</title>  
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>

<body>

<form action="formprocessing.php" name="formpje" id="searchForm">
<input type="text" name="s" placeholder="Search..." />
<input type="submit" value="Search" name="submit1" />
</form>

<!-- the result of the search will be rendered inside this div -->
<div id="result"></div>

<script>

/* attach a submit handler to the form */
$("#searchForm").submit(function(event) {

/* stop form from submitting normally */
event.preventDefault();

/* get some values from elements on the page: */
var $form = $( this ),
term = $form.find( 'input[name="s"]' ).val(),
url = $form.attr( 'action' );

/* Send the data using post */
var posting = $.post(url,{s: term},'json');

/* Put the results in a div */
posting.done(function( data ) {
var content1 = $( data ).find( '#content' );
contentstring = JSON.stringify(content1);
$( "#result" ).empty().append( contentstring );

});


});

</script>
</body>
</html>

文件'formprocessing.php'包含以下内容(包括isset-test):

<!DOCTYPE html>

<?php
if(isset($_POST['submit1'])) {
echo ( json_encode(array("content" => $invoer)) ); 
}
?>

谢谢!

5 个答案:

答案 0 :(得分:2)

因为您只发布s的数据;您提交的数据对象中没有submit1

答案 1 :(得分:1)

因为您从未将submit1设置为您传递给$.post()的数据对象的一部分:

var posting = $.post(url,{s: term},'json');

$.post()不会自动传递您的所有表单值;它只发送你在第二个参数中指定的内容。 $_POST中唯一要设置的是's'密钥。

答案 2 :(得分:0)

我建议使用

if(isset($_POST['s'])) {
     echo ( json_encode(array("content" => $invoer)) ); 
}

答案 3 :(得分:0)

您的文本框中的数据正在发送(name =“s”),而不是您的名字=“submit1”。因此,要么在帖子中包含'submit1',要么查找's'值

答案 4 :(得分:0)

您可以使用serialize函数序列化表单。因此,您将从表单中获取包括submit1在内的所有元素。