0

我已经构建了一个简单的表单,我想在不刷新页面的情况下发送它,因此我使用 jQuery。当我提交表单但 process.php 报告数据未转换时出现问题,并且 process.php 打印消息“未收到帖子”。这是表单文件的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
<title>Insert title here</title>
</head>
<script type="text/javascript">
$(function(){
      $('#submit').click(function(){
          var getField = $("#field").val();
          $.ajax({
             url: 'process.php' , 
             type: 'POST',
             data: 'data: ' + getField,
             success: function(result){     
               $('#container').text('<p>' + result + '</p>')      
             }
          });   
          return false;     
       });
    });
</script>

<body>

<div id="container">
<form method="post" action="process.php">
<input name="field" id="field" type="text" />
<input type="submit" value="submit" id="submit" />
</form>
</div>

</body>
</html>

这是 process.php 代码:

<?php
if($_POST){
    echo $_POST['field'];
}
else
    echo "no post received";
?>

你知道 jQuery / 表单有什么问题吗?欢迎任何建议,谢谢

4

2 回答 2

3

看起来你data的格式不正确。它应该是一个完整的 JavaScript 对象:

data: '{ data: "' + getField + '"}',

请参阅http://api.jquery.com/jQuery.ajax/#entry-examples

或者,更方便的是,尝试使用该.serialize()方法。

于 2012-08-13T19:40:57.733 回答
0
data: 'data: ' + getField

将 getField 的值作为“数据”而不是“字段”发布到 process.php,因此您需要获取 $_POST['data'] 的值,尽管将变量命名为“数据”通常不是一个好主意。您可能还想查找 jQuery post 函数,该函数正是为您正在做的事情而设计的。

于 2012-08-13T19:41:36.903 回答