2 Stimmen

Wie man Daten aus XMLHttpRequest in einem Rails-Controller extrahiert

Das folgende JavaScript sendet einen XMLHttpRequest mit einem Parameter recipe_num an meinen Rails-Server. Wie extrahiere ich die Daten aus dem Controller? Ich habe params[:recipe_num] und session[:recipe_num] ausprobiert, aber beides funktioniert nicht.

function getRules(recipe_num){
    var request = new XMLHttpRequest;
    request.open("POST", "/path/rules_json?format=json", true);
    var token = $("meta[name='csrf-token']").attr("content");
    request.setRequestHeader("X-CSRF-Token", token);
    request.onreadystatechange = function() {
        if(request.readyState == request.DONE){
            buildForm(JSON.parse(request.responseText));
        }
    };
    request.send("recipe_num=" + recipe_num);
};

1voto

Devin Punkte 129

Für Rails 5.1.2,

Sie können die Rohdaten mit request.raw_post erhalten. Wenn Sie es als params verwenden möchten, sollten Sie den Content-type Header hinzufügen.

# für Zeichenfolge
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("prev_id="+pid+"&next_id="+nid);
# für JSON-String
request.setRequestHeader("Content-type", "application/json");
request.send(JSON.stringify({ prev_id: pid }));

Verweisen Sie auf die Datei action_dispatch/http/parameters.rb

DEFAULT_PARSERS = {
    Mime[:json].symbol => -> (raw_post) {
      data = ActiveSupport::JSON.decode(raw_post)
      data.is_a?(Hash) ? data : { _json: data }
    }
  }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X