Я новичок в AJAX, так что несите меня. Я пытаюсь отправить данные из окна чата-сообщения в два места - фактическое окно чата и метод рельсов. Таким образом, я могу отображать meesage, а также сохранять сообщение в моей БД.Rails проблема отправки данных AJAX контроллеру
У меня есть следующий 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
UPDATE
ждать, что-то не так с моей JS кода. Ранее он вставлял HTML в DOM, но где-то по его настройкам он останавливался. Теперь консоль бросает ошибку new:110 Uncaught SyntaxError: Unexpected identifier
строка 110 закомментирована.
Когда я вызываю функцию, тогда она работает нормально. У меня есть что-то синтаксически неправильно, когда я называю .ajax
функции внутри myFunction()
Какие маршруты вы выбрали? Можете ли вы добавить коды для метода 'create' в вашем контроллере? – Kumar
Вы правы в своей догадке, 'dataType' должен быть' json'. –
@NicNilov, который не разрешил проблему. Правильно ли, если я помещу 'debugger' в действие' create', то он должен открыть отладчик в консоли? Я добавил маршруты –