【发布时间】:2011-12-09 01:08:26
【问题描述】:
我有一个非常简单的表单来更新用户的状态消息。表单确实有效,但我没有得到任何响应(使用 firebug 提交后的响应为空)。
这里是 html/js:
<form id="StatusUpdateForm" method="post" action="http://www.url.com/process.php">
<input name="StatusUpdate" type="text" id="StatusUpdate" />
<input type="hidden" name="userid" value="<?=$_SESSION['user']['id']?>" />
<input type="submit" value="Update your status" />
</form>
<div id="results"></div>
<script>
/* attach a submit handler to the form */
$("#StatusUpdateForm").submit(function(event) {
/* stop form from submitting normally */
event.preventDefault();
/* get some values from elements on the page: */
var $form = $( this ),
StatusUpdate = $form.find( 'input[name="StatusUpdate"]' ).val(),
userid = $form.find( 'input[name="userid"]' ).val(),
url = $form.attr( 'action' );
/* Send the data using post and put the results in a div */
$.post( url , $("#StatusUpdateForm").serialize(),
function( data ) {
$('#results').html(data);
}
);
});
</script>
这里是process.php:
if($_POST['StatusUpdate']&&$_POST['userid']){
if( StatusMessage::set($_POST['userid'], $_POST['StatusUpdate']) ){
echo "<div id='content'>Comment updated!</div>";
} else {
echo "<div id='content'>Problem updating comment. Try again.</div>";
}
}
【问题讨论】:
-
由于您期望返回 HTML,因此您应该只返回 HTML。只有 JSON 请求应该是 JSON 编码的。
-
PHP 是否在您的 httpd.log 中抛出任何错误?你有没有试过用总是返回的东西替换 php 代码,以确保你的脚本得到了 ajax 回复?
-
使用 Fiddler 检查响应,看看它是否确实为空或只是未能插入。
-
@Kenaniah 我试过只返回 HTML,也改变了它。不过还是不行。
-
另外,我对 PHP 不是很了解,但是顶级范围内的
return是否会发送内容来响应?不应该是echo什么的吗?