$ .ajax POST随机不会提交数据

时间:2012-11-28 07:46:21

标签: jquery ajax database post

我正在使用我正在更新D& D字符信息的网站。在这个特定的页面上有可编辑的div,我在其中进行更改并通过(一个非常不一致的)ajax POST脚本提交。

不知何故POST不会提交任何更改,它可能是完全随机的。有时它可以工作并更新数据库,有时它不会。当然,你们不可能对我的服务器发布POST,但是ajax如下:

<script type="text/javascript">
 $(document).ready(function() {
      $("#actor_result").load('xml/actortoxml.php?owner=cederman&id=2');
      $('#save_editable').click(function() {
        var name = $(document).find('#actorname').text();
        var current = $(document).find('#currenthealth').text();
        var max = $(document).find('#maxhealth').text();
        var effects = $(document).find('#actoreffects').text();
        var notes = $(document).find('#actornotes').text();
        $.ajax({
            url: 'actor_profile.php',
            type: 'POST',
            data: {
                update: 'true',
                actorid: 2,
                actorname: name, currenthealth: current, maxhealth: max, actoreffects: effects, actornotes: notes
            },
        });
        window.location = 'actor_profile.php?id=2'
    });

/*
   var refreshId = setInterval(function() {
      $("#actor_result").load('xml/actortoxml.php?owner=cederman&id=2');
   }, 300000);
   $.ajaxSetup({ cache: false });
*/
});
</script>​

点击此处的小提琴进行说明: http://jsfiddle.net/CgLmW/2/

1 个答案:

答案 0 :(得分:1)

由于$.ajax是异步的,因此在ajax请求完成之前,您将从页面重定向。此重定向导致ajax请求在成功完成之前被杀死。

将重定向语句移至成功回调。

$.ajax({
    url: 'actor_profile.php',
    type: 'POST',
    data: {
        update: 'true',
        actorid: 2,
        actorname: name, currenthealth: current, maxhealth: max, actoreffects: effects, actornotes: notes
    },
    success : function() {
        // gets called when ajax request completes successfully
        window.location = 'actor_profile.php?id=2';     
    },
    error : function(err) {
        // in case of error
        console.log(err);
        alert('error');
    }
});