Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么location.reload()会破坏我的$.post?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么location.reload()会破坏我的$.post?

Javascript 为什么location.reload()会破坏我的$.post?,javascript,jquery,Javascript,Jquery,我有一个select元素,当使用$.post进行更改时,它可以正常发布。但是如果我想重新加载页面,并添加一个location.reload,那么它不会发布。如果我删除了这条线,它就可以正常工作了。有什么想法吗 <script type="text/javascript"> $('#target').change(function() { $.post('<?=$base_url?>orders/create-ne

我有一个select元素,当使用$.post进行更改时,它可以正常发布。但是如果我想重新加载页面,并添加一个location.reload,那么它不会发布。如果我删除了这条线,它就可以正常工作了。有什么想法吗

        <script type="text/javascript">
          $('#target').change(function() {
            $.post('<?=$base_url?>orders/create-new/order-items/<?=$order_id?>/target', 
              { 
                use_sort_modifier: $('select#target').val(),
                order_id: <?=$order_id?>
              } 
            );
            location.reload(); // Works without this line.
          });
        </script>

异步执行,因此在调用location.reload时实际上没有执行,因此它会被中断-您可以将一个成功回调传递给$.post,该回调在post成功完成后执行,并在那里执行重新加载。

Ajax是异步的。你的重新装填在柱子有机会完成之前开火

在post的成功事件处理程序中重新加载:

$.post('<?=$base_url?>orders/create-new/order-items/<?=$order_id?>/target', 
  { 
   use_sort_modifier: $('select#target').val(),
   order_id: <?=$order_id?>
  },
 function() { location.reload(); }
 );

您需要在post的回调上执行location.reload,而不仅仅是在post代码之后

以下是一个例子:

    $.ajax({
      type: 'POST',
      url: url,
      data: data,
      success: function() { location.reload() },
      dataType: dataType
    });

您需要将其放入$post代码中的success:part中。

您也可以在ajax语句中放入async:false

您应该在success回调中写入这一行。谢谢,工作非常顺利。我会尽快接受你的答复。谢谢。我使用的是.post而不是.ajax。