我是 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,但它没有将数据发送到消息 Controller create
操作。我的消息 Controller 名为 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 代码有问题。之前它会将 HTML 插入到 DOM 中,但在调整过程中的某个地方它停止了。现在控制台抛出错误 new:110 Uncaught SyntaxError: Unexpectedidentifier
第 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
这就是您的代码的样子。您始终可以做得更有创意。
请查看此gist
关于javascript - Rails 无法将 AJAX 数据发送到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38335562/