我正在 Django 中創建一個聊天應用程式。我正在使用 ajax 在輸入框中輸入每個字符后顯示搜索結果。它作業正常。但是現在我正在嘗試向搜索結果添加一個鏈接(這只是一個名稱),這樣如果我單擊其中一個搜索結果,它就會轉到該鏈接并呼叫 views.chat_from_search 我處理創建的所有邏輯聊天和渲染頁面。我嘗試添加一個事件偵聽器,然后重定向到新鏈接(我嘗試添加鏈接的代碼在 ** ** 標簽內)但它導致此錯誤 Reverse for 'chatSearch' with arguments '('',) ' 未找到。嘗試了 1 種模式:['chat/search/(?P<chat_user_name>[^/] )/\Z'] 我的 ajax 搜索代碼以及創建包含搜索結果的 div 的位置(以及我添加鏈接的失敗嘗試)位于 sendSearchData 內(如下所示)。ajax 回傳一個只有用戶名屬性的物件陣列。這是物件的結構(我正在創建它并將其附加到我回傳的串列中)
indiv_user = {
'name': user.username,
}
const sendSearchData = (contact_name) => {
$.ajax({
type: 'POST',
url: '/search/',
data:{
'csrfmiddlewaretoken': csrf,
'contact_name': contact_name,
},
success: (res) =>{
const data = res.data;
document.getElementById('search_result_box').innerHTML = ""
if (Array.isArray(data)){
data.forEach(contact => {
document.getElementById('search_result_box').innerHTML =
" <div id ='" contact.name "'class='search-person'><h5 class='search-name'>" contact.name "</h5></div>";
**document.getElementById(contact.name).addEventListener('click',function(){
location.href= "{% url 'chatPage:chatSearch' contact.name %}"
});**
});
}
},
error: (err)=>{
console.log(err)
}
})
}
我的 urls.py 是
from django.urls import path
from chatPage import views
app_name = "chatPage"
urlpatterns = [
path('', views.homepage, name='homepage'),
path('chat/<int:chatID>/', views.home, name='chat'),
path('chat/search/<str:chat_user_name>/', views.chat_from_search, name='chatSearch'), #noqa
path('search/', views.search_result, name='search')
]
誰能告訴我為什么這不起作用?另外,在從 ajax 獲取結果后,如何在 div 中添加鏈接,或者我應該以不同的方式處理這個問題?我一直試圖解決這個問題 2 天,任何幫助將不勝感激。非常感謝你。
uj5u.com熱心網友回復:
模板格式化語言(例如 {{ code }} 和 {% code %} 部分)在 Djano 第一次交付頁面之前進行評估。在頁面傳送到瀏覽器之后,它無法評估這些內容,因此它無法獲取您的 ajax 結果并對其進行格式化。您得到的錯誤是因為它試圖在用戶甚至獲得頁面之前執行評估,所以它沒有 contact.name 可以使用。
您必須單獨使用 ajax 資料和 javascript 以不同的方式構建您的 URL。值得慶幸的是,在這種情況下,URL 構造看起來很簡單,并且您已經有了必要的變數,因此您應該能夠使用類似的東西
location.href= "/chat/search/" contact.name
另一種選擇是更新您的發布請求,以將聊天搜索 URL 作為回應的一部分包括在內,例如,
contact { "name": user.name,
"url" : reverse('chatsearch', kwargs={"chat_user_name": user.username]
}
然后你可以簡單地參考
location.href= contact.url
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480803.html
標籤:javascript jQuery python-3.x django 阿贾克斯
