简体   繁体   中英

AJAX post request, an object that includes an array and other objects, can't be parsed correctly into rails

What I want is to get a proper parameter, if you see the parameter been logged can you tell me if the problem's in my JavaScript?

First run the runMe function

 Ajax: function()
{
  var xmlhttp, bComplete = false;
  try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest(); }
  catch (e) { xmlhttp = false; }}}
  if (!xmlhttp) return null;
  this.connect = function(sURL, sMethod, sVars, fnDone)
  {
    if (!xmlhttp) return false;
    bComplete = false;
    sMethod = sMethod.toUpperCase();

    try {
      if (sMethod == "GET")
      {
        xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        sVars = "";
      }
      else
      {
        xmlhttp.open(sMethod, sURL);
        xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        xmlhttp.setRequestHeader("Content-Type",
          "application/x-www-form-urlencoded");
                xmlhttp.setRequestHeader("Content-length", sVars.length);
      }
      xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState == 4 && !bComplete)
        {
          bComplete = true;
          fnDone(xmlhttp);
        }};
      xmlhttp.send(sVars);
    }
    catch(z) { return false; }
    return true;
  };
  return this;
},
tOrigin: function(origin){
    this.origin = origin;
},
tObject: function(origins,url,apik){
    this.origins=origins; //this is an array
    this.url=url;
    this.apik=apik; 
    this.host= "http://localhost:3000/";//window.location.hostname;
}
    runMe: function(){
                    var t = new tObject(['this','word','word me please','and me please','word','word','okay','word','go','go'],window.location.href,"helloapik");
    //  console.log(t);

        ajax = new Ajax();
        ajax.connect("http://localhost:3000/","POST",JSON.stringify(t), callBackFunc)
    }

This is what I'm getting in my rails server log:

Parameters:

{"{\\"origins\\":"=>{"{\\"origin\\":\\"this\\"},{\\"origin\\":\\"word\\"},{\\"origin\\":\\"word me please\\"},{\\"origin\\":\\"and me please\\"},{\\"origin\\":\\"word\\"},{\\"origin\\":\\"word\\"},{\\"origin\\":\\"word\\"},{\\"origin\\":\\"okay\\"},{\\"origin\\":\\"word\\"},{\\"origin\\":\\"go\\"},{\\"origin\\":\\"go\\"}"=>{",\\"url\\":\\"file:///Users/waheed/Desktop/untitled.html\\",\\"apik\\":\\"helloapik\\",\\"host\\":\\"http://localhost:3000/\\"}"=>nil}}}

If the whole jQuery library is too much overhead you could gut it and pick what you need.

In any case, I'd say this is a problem with how you parse serverside, there seems to be some trailing s Ruby magic going on, but without knowing your serverside code it is quite hard to tell what is going on.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM