[英]Rails trouble sending AJAX data to controller
我是AJAX新秀,請耐心等待。 我正在嘗試將數據從聊天消息框發送到兩個地方-實際的聊天框和rails方法。 這樣,我可以顯示消息,也可以將消息存儲在數據庫中。
我有以下JS / HTML代碼
<button onclick="myFunction()" name="submitmsg" type="submit" id="submitmsg" value="Send">Try it</button>
<script>
function myFunction() {
var x = document.getElementById("frm1");
console.log(x);
var text = "";
var i;
for (i = 0; i < x.length ;i++) {
text += x.elements[i].value + "<br>";
}
document.getElementById("chatbox").innerHTML += text;
$.ajax({
url : "/messages/create",
type : "post",
data : { data_value: x }
dataType : "text" //this might be wrong?
});
}
</script>
我可以成功插入HTML DOM,但是它沒有將數據發送到message控制器create
動作。 我的消息控制器名為messsages_controller.rb
,操作為create
。
我已經在我的create
動作中添加了debugger
,以便隨后查看什么params
,但是它甚至從不執行代碼。
一些路線:
messages GET /messages(.:format) messages#index
POST /messages(.:format) messages#create
new_message GET /messages/new(.:format) messages#new
edit_message GET /messages/:id/edit(.:format) messages#edit
message GET /messages/:id(.:format) messages#show
PATCH /messages/:id(.:format) messages#update
PUT /messages/:id(.:format) messages#update
DELETE /messages/:id(.:format) messages#destroy
更新
等等,我的JS代碼出了點問題。 以前是在DOM中插入HTML,但在調整過程中卻停止了。 現在,控制台將new:110 Uncaught SyntaxError: Unexpected identifier
錯誤new:110 Uncaught SyntaxError: Unexpected identifier
注釋了new:110 Uncaught SyntaxError: Unexpected identifier
行110。
當我從函數中調用.ajax
時,它可以正常工作。 我在myFunction()
內調用.ajax
函數時,在語法上出現了錯誤
$.ajax({
url : "/messages", //by rails convention doing a post simply to '/messages' should be handled by create action
method : "post",
data : { data_value: x },
dataType : "json", //this might be wrong?
success: function(response){
//do something,maybe notify user successfully posted their message
},
error: function(error){
console.log(error);
}
});
在您的create
方法中,您應該處理json
請求
def create
//save message
@message.save!
respond_to do |format|
format.json { json: @message.as_json }
end
end
這就是您的代碼的外觀。 您總是可以更有創造力。
請檢查這個要點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.