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\"},{\"开发者_如何学Goorigin\":\"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.
精彩评论