簡體   English   中英

Rails無法將AJAX數據發送到控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM