的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));
}
}
可以console.log(event.currentTarget.getAttribute(「data-table」);)並告訴我輸出是什麼? – madalinivascu
它評估爲「framedate_ul」。我需要ID爲「framedate_ul」的元素將表單放置到適當的位置。 – Michael
看到我的回答在 – madalinivascu