1

我正在一个网站上更新有关 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/

4

1 回答 1

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');
    }
});
于 2012-11-28T07:56:47.450 回答