[英]AJAX request only functioning properly when all the code is on one line
我有一個這樣的控制器發送的AJAX請求:
在控制器中:
respond_to do |format|
format.js {render 'show_data'}
end
show_data.js.erb
$('#foo').html("<%= render partial: "foo/show_data" %>");
部分:_show_data.html.erb
<table> <tr> <th><%= "Name" %> </th> <th><%= "ID" %> </th> </tr> <tr> <td> <%= "Steve" %> </td> <td> <%= "1"%> </td> </tr> </table>
僅當所有代碼都在一行上時,上表才會正確呈現。 如果我按回車鍵,則在AJAX請求通過后它不會顯示在目標div中。 這不是表格標記所獨有的,我只是以它為例。 任何時候只要有一行以上就不會顯示。
工作時的響應:
$('#proto').html("<table> <tr> <th>Name </th> <th>ID </th> </tr> <tr> <td> Steve </td> <td> 1 </td> </tr> </table>");
不起作用時的響應:
$('#proto').html("<table> <tr> <th>Name </th> <th>Rep ID </th> </tr> <tr> <td> @rep.name </td> <td> @rep.id </td> </tr> </table>
");
發出AJAX請求的相同系統在我的另一個應用程序中也可以正常工作。 任何幫助將不勝感激,非常感謝!
將字符串分成幾行而不是一條長行是否很重要? 如果是這樣,請使用類似以下內容的方法:
$('#proto').html(
"<table> <tr> <th>Name </th>"
+ "<th>ID </th> </tr>"
+ "<tr> <td> Steve </td>"
+ "<td> 1 </td> </tr> </table>"
);
僅當所有代碼都在一行上時,上表才會正確呈現。 如果我按回車鍵,則在AJAX請求通過后它不會顯示在目標div中。
這是因為JS不允許文本文字跨越多行。 (並且您應該在錯誤控制台中獲得了相應的錯誤消息。)
您可以通過以下幾種方法解決此問題:
+
連接起來。 \\
字符終止每一行(這樣JS允許文本文字在下一行繼續)。 \\n
(實際的兩個字符\\
和n
)替換文本中的換行符,以便使用JS看到類似“ Foo \\ nBar”的信息。 那仍然意味着實際值中有換行符,但是並沒有破壞JS語法。 所有這些都可以在服務器端自動完成。
原來我忘了在“渲染”之前包括“ escape_javascript”。 我要去洗個澡淹死自己。 謝謝你的回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.