亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django:無法觸發 AJAX 調用并將值發送回我的表單

Django:無法觸發 AJAX 調用并將值發送回我的表單

慕后森 2023-09-04 16:59:19
我需要運行 AJAX 調用來在 django 視圖中執行快速計算,并將結果返回到 html 頁面的標簽內。我對 Javascript 很陌生,所以我不明白為什么我的 AJAX 調用沒有被觸發。這是我的 html 和 JS 代碼:<input type="text" name="SHm2" maxlength="10" type="number" value="50"><input type="text" name="STm2" maxlength="10" type="number" value="50"><button id="estimation" name= "estimation" onclick="calculate()">Estimation</button><span>{{estimation}}</span><script type="text/javascript">  function calculate () {    $.ajax({            url: '/myApp/templates/homepage/',            type: 'POST',            data: {              SHm2: $('#SHm2').val(),              STm2: $('#STm2').val()            },            success: function(estimation) {            alert(estimation);            document.getElementById("estimation").innerHTML = estimation;            }    }); }</script>這是我的views.py:def homepage(request):    if request.method == 'POST' and request.is_ajax and 'estimation' in request.POST:        SHm2 = request.POST.get('SHm2')        STm2 = request.POST.get('STm2')        estimation = float(SHm2) + float(STm2)        estimation = json.dumps(estimation)        return HttpResponse(estimation, content_type='application/json')問題是 AJAX 代碼沒有被觸發,因為我沒有收到警報。盡管如此,我的 django 視圖中的代碼仍然在運行(這很奇怪,因為我指定運行 if 'request.is_ajax',但另一方面它似乎沒有被識別)。它加載一個新頁面,并在其中正確顯示結果。但這不是我想要的,因為我需要結果以我的形式包含在 span 標記中,其中 {{estimation}} 是我的變量。你能告訴我我做錯了什么嗎?謝謝!更新:感謝您的回答,情況正在變得更好。我已將views.py 中的“request.is_ajax”替換為“request.is_ajax()”。我已將“id”屬性添加到我的輸入框中。這幫助我觸發 AJAX 調用,而不是在新頁面中加載內容。不過還有最后一件事。我仍然無法在跨度標記中顯示估計變量的值。我意識到它沒有“id”屬性,所以我做了以下更改:<span id="estimation2">{{estimation}}</span>同樣在我的 JS 代碼中,我將成功部分的最后一行替換為:document.getElementById("estimation2").innerHTML = estimation;基本上我用“估計2”替換了“估計”。不幸的是,span 標簽沒有更新。知道我缺少什么嗎?
查看完整描述

3 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

將名稱更改為 ID。因為#表示字段的 id。就像從name="SHm2"到id="SHm2"


<input type="text" id="SHm2" maxlength="10" type="number" value="50">

<input type="text" id="STm2" maxlength="10" type="number" value="50">


<button id="estimation" name= "estimation" onclick="calculate()">Estimation</button>

<span>{{estimation}}</span>


<script type="text/javascript">

  function calculate () {

    $.ajax({

            url: '/myApp/templates/homepage/',

            type: 'POST',

            data: {

              SHm2: $('#SHm2').val(),

              STm2: $('#STm2').val()

            },

            success: function(estimation) {

            alert(estimation);

            document.getElementById("estimation").innerHTML = estimation;


            }

    }); 

}

</script>


查看完整回答
反對 回復 2023-09-04
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

第一名

request.is_ajax是一個函數

第二名

'estimation' in request.POST 您的聲明中有它,但您沒有將其傳遞給查看。將其添加到語句data或從語句中刪除


查看完整回答
反對 回復 2023-09-04
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

看來問題來自于我沒有在 html 代碼中聲明按鈕的類型。默認值(即“提交”)阻止它根據需要觸發我的 AJAX 代碼。所以最后我不得不將其設置為“type =“button””才能使其正常工作。



查看完整回答
反對 回復 2023-09-04
  • 3 回答
  • 0 關注
  • 167 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號