使用 JQuerys .post() 没有响应

发布于 2024-12-20 02:48:01 字数 1432 浏览 0 评论 0原文

我有一个非常简单的表单来更新用户的状态消息。表单确实有效,但我没有收到任何响应(使用 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>";
    }
}

I have a very simple form for updating a user's status message. The form does work, but I am not getting any response (using firebug the response after submit is empty).

Here is the 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>

Here is 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>";
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟酉 2024-12-27 02:48:01

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);
    }
});

Change return to echo. If it's not outputting anything there won't be any response to send!

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>";
    }
}

To be extra sure it's executing, add an error callback function:

$.post(url , $("#StatusUpdateForm").serialize(), function(data) {
    $('#results').html(data);
}).error(function(eventData) { 
    alert('error: ' + eventData); // try that
});

Or (preferred):

$.ajax({
    type: 'POST',
    url: url,
    success: function(response) {
        $('#results').html(response);
    },
    error: function(xhr, textStatus, errorThrown){
        // alert(errorThrown);
        alert(textStatus);
    }
});
柠檬色的秋千 2024-12-27 02:48:01

调用ajax时不能使用绝对路径。 即使,如果您没有调用外部网址

将 http://www.url.com/process.php 更改为 process.php

You cannot use absolute paths when calling ajax. Even if you are not calling an outside url.

change http://www.url.com/process.php to process.php

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文