2017-05-01 36 views
0

我們在應用程序中有一個搜索功能,當用戶輸入某些內容時,結果將根據過濾器生成並顯示在頁面上。jQuery ajax不適用於生成的標記

這裏的動態結果後各keyup

htmlResult = ` 
<li> 
    <div> 
     <img src='${user.avatar}' width='80' alt='${user.fullName}' /> 
    </div> 
    <a tabindex='0' 
     class ='btn2' 
     data-html='true' 
     data-toggle='popover' 
     data-content="<div class='list-group'><a href='#' class='item' data-val1-value='0'>Val1</a></div>">add</a> 
</li> 
`; 

這裏是事件處理程序:

$("[data-toggle=popover]").popover(); 
$(document).on('click', '.btn2', function(event) { 
    event.preventDefault(); 
    $(this).popover({ html: true }); 
}); 

$(document).on('click', '.item', function (event) { 
    event.preventDefault(); 
    const value1 = $(this).attr('data-val1-value'); 

    const params = { 
     value1: value1 
    }; 
    $.ajax({ 
     type: "POST", 
     url: endPoint, 
     dataType: 'json', 
     contentType: 'application/json', 
     data: JSON.stringify(params), 
     success: (result) => { 
      // refresh 
     } 
    }); 
}); 

有兩個問題與此代碼:

  • 酥料餅,將顯示3次點擊後.item
  • jQuery ajax不會成功,它會在控制檯上顯示400 Bad Request錯誤。

PS:此代碼適用於未生成標記。

有什麼想法嗎?

+0

在上面的代碼中,url被設置爲字符串'url',這似乎解釋了400錯誤。 – Pango

+0

@Pango這實際上是一個URL,我不想把實際的網址放在這裏。 –

+0

很酷,只是檢查。我不認爲你想把你的參數串起來,而只是傳遞params。 – Pango

回答

0

一),以確保您的網址是正確的, 1)更新您的服務器端funtion不接受任何參數只是用於測試 2)調用Ajax和數據:NULL 3)調試,看看它是否達到服務器端功能。 b)如果沒有達到服務器端,檢查它是否是服務器端的POST或GET函數。 c)如果您確定服務器端函數調用正確,則不使用stringfy。

可能有幫助。

0

對於彈出窗口,您必須重新啓動每個dinamyc內容被附加到HTML。 對於Ajax 400,這是因爲該URL沒有找到路徑路徑,請再次檢查您的後端請求。

相關問題