-1

这是我几个小时前发布的另一个问题的后续行动(PHP post 方法显然不起作用)。代码仍然没有做它应该做的事情,但是代码和问题本身已经发生了很大的变化,以至于我更喜欢​​发布一个新问题(同时考虑到问题似乎主要是在发布后立即阅读)。我将尝试关闭前面的问题(这里仍然有些新)。

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

这是代码,它由两个文件组成。文件“form.php”(几乎从 jQuery 站点复制: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)) ); 
}
?>

谢谢!

4

5 回答 5

2

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

于 2013-08-20T06:17:35.387 回答
1

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

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

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

于 2013-08-20T06:17:49.673 回答
0

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

于 2013-08-20T06:26:23.673 回答
0

我建议使用

if(isset($_POST['s'])) {
     echo ( json_encode(array("content" => $invoer)) ); 
}
于 2013-08-20T06:17:56.597 回答
0

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

于 2013-08-20T06:19:34.747 回答