我有一个非常简单的表单来更新用户的状态消息。表单 可以正常工作 ,但我没有得到任何回复(在提交为空后使用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>";
}
}
答案 0 :(得分:1)
将return
更改为echo
。如果它不是输出,则不会有任何响应发送!
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>";
}
} else {
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'
) {
echo "<div id='content'>Some other error!</div>";
}
}
为了确保它正在执行,添加一个错误回调函数:
$.post(url , $("#StatusUpdateForm").serialize(), function(data) {
$('#results').html(data);
}).error(function(eventData) {
alert('error: ' + eventData); // try that
});
或(首选):
$.ajax({
type: 'POST',
url: url,
success: function(response) {
$('#results').html(response);
},
error: function(xhr, textStatus, errorThrown){
// alert(errorThrown);
alert(textStatus);
}
});
答案 1 :(得分:0)
调用ajax时不能使用绝对路径。 即使,如果您没有呼叫外部网址。
将http://www.url.com/process.php
更改为process.php