2011-04-27 29 views
0

我有一個表單提交給一個需要很長時間才能執行的腳本(〜30-60秒,給予或帶走)。我想要一個微調器,顯示用戶等待時正在處理的結果。通常情況下,我會將Spinner粘貼到處理腳本中並完成處理,但我無法訪問該腳本。有沒有辦法使用js/jQuery提交AJAX請求,然後在完成處理時加載目標頁面?像這樣的東西是我想要的:用AJAX結果代替文檔

<script type="text/javascript"> 
    $(function() { 
     $("#myForm").submit(function() { 
      var data = $(this).serialize(); 
      $.post("url/to/script.php", data, function (results) { 
       // replace this entire document, url included, with the results 
      }); 
      $("#spinner").hide().ajaxStart(function() { 
       $(this).show(); 
      }).ajaxStop(function() { 
       $(this).hide(); 
      }); 
     }); 
    }); 
</script> 

我對其他想法也很開放。

[編輯]

(希望)澄清:我想要的結果在後臺加載,只有當他們完成導航到他們。行爲(除了微調器)應該與最終用戶沒有區別,而不是在不使用JavaScript的情況下提交表單。

[編輯2]

我設法說服目標腳本的所有者把一個微調到位,所以現在的問題是學術。

+0

「url included」是什麼意思?什麼返回ajax?爲替換整個documento,執行'$(「body」)。html(results);' – jotapdiez 2011-04-27 15:06:12

+0

我試過了,得到一個空白屏幕。我懷疑它與結果中的有關。我嘗試將結果解析爲頭部和正文,然後通過jQuery將它們分配,並得到相同的淨結果(空白屏幕)。 – asgallant 2011-04-27 16:56:55

+0

什麼返回ajax? – jotapdiez 2011-04-27 18:53:09

回答

1

如果我的理解正確...你不能用javascript代替網址。你可以不只是window.location.href =「your-new-url.com」成功的ajax?

如果你不能這樣做,你可以從ajax請求發佈你的結果數據到新的url,並讓該頁面吐出你的結果。

+0

設置window.location.href = url會導致瀏覽器加載目標網址,作爲一個全新的請求,這會破壞目的。將返回的html添加到url欄會破壞相關鏈接(就像將結果插入搜索頁面一樣)。 – asgallant 2011-04-27 16:53:10

+0

@asgallant我知道這是做什麼。我想我沒有正確理解你。如果你能提供更多的信息,你可能會幫助你做更多的事情。 – Craig 2011-04-27 18:08:30