我是一名AJAX新秀,所以请耐心等待。我试图将数据从聊天消息框发送到两个地方 - 实际聊天框和rails方法。这样我就可以显示meesage,并将消息存储在我的数据库中。
我有以下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,但它不会将数据发送到消息控制器create
操作。我的消息控制器名为messsages_controller.rb
,操作为create
。
我已在debugger
操作中添加create
,以便随后查看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代码有问题。它之前是将HTML插入到DOM中,但在调整它的某个地方停止了。现在控制台抛出错误new:110 Uncaught SyntaxError: Unexpected identifier
第110行被注释掉了。
当我.ajax
调用该函数时,它运行正常。当我在.ajax
myFunction()
函数时,我的语法错误
答案 0 :(得分:1)
$.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
这就是你的代码应该是这样的。你总是可以创造性地做得更好。
请查看此gist