最新编辑:事实证明,在 formprocessing.php 中, isset($_POST['submit1']) 为 FALSE(其中 'submit1' 现在是提交按钮的名称;最初它没有名称)。如下面的代码所示,我最初没有对此进行测试。
它确实解释了很多。但剩下的问题是为什么isset($_POST['submit1']) 是 FALSE。
注意:这个问题已经过编辑,以反映最近的见解。
作为一个 PHP 初学者,我正在尝试将表单发布到服务器,但它不起作用。很可能我忽略了一些简单的事情,但我只是看不到它。
我有两个文件:“form.php”和“formprocessing.php”,它们都位于同一个文件夹中。我在下面包含了完整的代码,但首先是一些解释。文件“form.php”包含表单本身,包括“post”方法。文件'formprocessing.php' 可以说是'post' 方法的目的地,即“action = formprocessing.php”。
这个想法是表单处理应该在没有“formprocessing.php”加载或“form.php”重新加载的情况下进行(因此在form.php中是“event.preventDefault();”)。我知道我也可以发布到“form.php”本身,但现在我想使用两个单独的文件。
我几乎从 jQuery 站点(http://api.jquery.com/jQuery.post/ ,最后一个示例)中获取了“form.php”的代码。我已将 action 属性中的文件名更改为“formprocessing.php”,并添加了必要的 JSON.stringify 命令(见下文)。
“formprocessing.php”中的其余代码只是简单地提取发布的输入字段的值(表单中只有一个字段),并将其以 JSON 对象的形式返回给“form.php”(然后在 form.php 中进行字符串化)。至少是这样的想法!
在“formprocessing.php”处生成的脚本。- 在输入字段中输入“xxx”后 - 如下:
<script> {"content":"xxx"} </script>
现在在我看来,这个脚本似乎是正确的——但它是吗?这是我现在想确定的第一件事。
编辑:我现在删除了 formprocessing.php 中的所有 HTML 标记。这也意味着生成的脚本减少到 {"content":"xxx"} ,即只有 JSON 对象。虽然不会改变结果。
因为以后确实会出问题。也就是说,在“form.php”的末尾,我将从“formprocessing.php”返回的数据的内容附加到一个div元素。但实际上附加到 div 的字符串原来是 "{"length":0,"prevObject":{"0":{},"1":{},"2":{},"3" :{},"4":{},"5":{},"6":{},"7":{},"8":{},"length":9},"selector": "#content"}" - 即表示长度为 0 的对象。而不是假设从“formprocessing.php”返回的实际数据(正如我所说,它也等于表单字段的原始输入)。
这是'form.php'的代码:
<!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" id="searchForm">
<input type="text" name="s" placeholder="Search..." />
<input type="submit" value="Search" />
</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 } );
/* Put the results in a div */
posting.done(function( data ) {
var content = $( data ).find( '#content' );
contentstring = JSON.stringify(content);
$( "#result" ).empty().append( contentstring );
});
});
</script>
</body>
</html>
这是'formprocessing.php'的代码:
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="UTF-8" />
<title>Contact</title>
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"></script>
</head>
<body>
<script>
<?php
echo "alert('Hello!');";
$invoer = $_POST['s'];
echo ( json_encode(array("content" => $invoer)) );
?>
</script>
</body>
</html>
非常感谢任何帮助。