Post-запрос AJAX, объект, который включает в себя массив и другие объекты, не может быть правильно проанализирован в рельсы - PullRequest
1 голос
/ 05 апреля 2010

Что я хочу, чтобы получить правильный параметр, если вы видите, что параметр был зарегистрирован, можете ли вы сказать мне, если проблема в моем JavaScript?

Сначала запустите функцию runMe

 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)
    }

Вот что я получаю в журнале моего сервера rails:

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}}}

1 Ответ

1 голос
/ 06 апреля 2010

Если вся библиотека jQuery слишком перегружена, вы можете ее проглотить и выбрать то, что вам нужно.

В любом случае, я бы сказал, что это проблема с тем, как вы анализируете серверную часть, кажется, что происходит некоторая запаздывающая магия Ruby, но без знания вашего серверного кода довольно сложно сказать, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...