2016-09-13 81 views
0

的EcmaScript 6,jQuery的3.1.0阿賈克斯:在GET請求的情況下,頁面清除

小提琴:https://jsfiddle.net/Kifsif/k6gw1gnw/10/

的Heroku:https://morning-headland-78510.herokuapp.com/frame/1/

還有就是頁面上的加號。點擊它應該在正上方添加一個表格。

問題是,當我通過AJAX添加表單時,它顯示在空白頁上。

那麼,我不能在小提琴中模仿它。在小提琴中,頁面沒有被清除。換句話說,小提琴中的一切都是正確的,就像我想要的那樣。

請在Chrome或其他瀏覽器中打開調試器。我已經放置了兩個斷點。

在調試器在斷點1:

this._url = "/frame/1/frame_date_create/" 

我沒有AJAX檢查。看:https://morning-headland-78510.herokuapp.com/frame/1/frame_date_create/

表單顯示正確。這意味着服務器似乎正確響應。

至於通過AJAX工作,麻煩的是,頁面清除,表單出現在用戶面前。在一個明確的頁面上。

服務器返回的形式如下代碼部分所示。狀態爲200.

讓我們回到JavaScript。成功功能是空的。它應該在適當的位置顯示錶格,但在這種情況下,它只包含一個斷點。

在調試器中,故障仍在繼續。在斷點2處,通常該頁面已被清除,並且窗體已經在屏幕上。但是有時候斷點2的頁面還沒有被清除。這種行爲上的差異使我感到驚訝。

我創建了一個視頻:https://www.youtube.com/watch?v=EhEZVBCK_hw

不幸的是,光標是不可見的。在0點28分是我處於斷點2時的情況,但頁面仍未更改。

通常在POST請求的情況下在發生AJAX請求的情況下清除頁面。我設法找到#1對這種情況下的GET請求一個問題:jquery Ajax goes to a blank page

你能幫我明白是怎麼回事,在這裏我犯了錯,如何解決這個問題。

<form id="object_form" action="/frame/1/frame_date_create/" method="post"> 
     <input type="hidden" name="csrfmiddlewaretoken" value="9UWsO6nYgQYHvo0W1QdclHG229IkaDV01YWl4j2Ug1DSOEf4kG5X87vZSsNNWre8"> 
      <table> 
       <tbody><tr><th><label for="id_date">Date:</label></th><td><input id="id_date" name="date" placeholder="ГГГГ-ММ-ДД" type="text" required=""></td></tr> 
    <tr><th><label for="id_precision">Точность:</label></th><td><select id="id_precision" name="precision" required=""> 
    <option value="">----</option> 
    <option value="F">Month</option> 
    <option value="Y">Year</option> 
    <option value="d">Day</option> 
    </select><input id="id_frame" name="frame" type="hidden" value="21"></td></tr> 
      </tbody></table> 
     <a id="submit" href="javascript:void(0)"><span class="glyphicon glyphicon-floppy-save" aria-hidden="true">Save</span></a> 


     <a id="cancel" href="javascript:void(0)"><span class="glyphicon glyphicon-remove-sign" aria-hidden="true">Cancel</span></a> 

</form 

>

class CreateManager{ 

... 

    _send_get_request(){ 
     debugger; // 1 
     $.ajax({ 
      method: "GET", 
      url: this._url, 
      dataType: "html", 
      success: this._show_form.bind(this), 
      error: general_fail 
     }); 
    } 

    _show_form(data){ 
     debugger; // 2 
     // let element = $('#' + this._data_table); 
     // element.after(data); 
     // this._button_manager.handle_cancel(); 
     // this._button_manager.handle_submit(this._send_post_request.bind(this)); 
    } 
} 
+0

可以console.log(event.currentTarget.getAttribute(「data-table」);)並告訴我輸出是什麼? – madalinivascu

+0

它評估爲「framedate_ul」。我需要ID爲「framedate_ul」的元素將表單放置到適當的位置。 – Michael

+0

看到我的回答在 – madalinivascu

回答

0

frame_date_create按鈕你同時觸發了添加單擊事件和更新的單擊事件刪除control類,但這2個AJAX調用,AJAX要求更新將ajax結果附加到dom文件

+0

第一種方法似乎沒有幫助。請再看看Heroku。我的理解正確嗎?我無法理解你的想法。 data_table = 「framedate_ul」。在你的情況和我的情況。這只是一個字符串。我們甚至不依賴於任何地方。當涉及到放置表單時但目前爲止的問題是清除頁面。 – Michael

+0

從我能看到你在做2 ajax調用爲什麼? – madalinivascu

+0

$(event).attr(「data-table」)返回undefined。那麼,我評論說,並返回你的第一個變種。 – Michael