开发者

What exactly am I sending through the parameters?

When doing a XMLHttpRequest and using POST as the form method, what exactly am I sending? I know it should be like send(parameters), parameters = "variable1=Hello", for example. But what if I want to do this:

parameters = "variable1=" + encodeURIComponent(document.getElementById("variable1").value);

variable1 being the id of the HTML form input.

Can I do it like this or do I need to assign the encodeURIComponent value to a javascript variable and send that variable:

var variable2;
parameters = "variable2=" + encodeURIComponent(document.getElementById("variable1").value);

You're suppose to send the object and it's value, but, is it an object from the HTML form开发者_开发百科, a javascript object or a php object? The problem is I already tried it and I still can't get the encoded input in my database, all I get is the raw input from the user.

BTW, I know it's a pretty dull question, but I feel the need to understand exactly what I'm doing if I want to come up with a solution.


g

  function createObject()
    {
        var request_type;
        var browser = navigator.appName;
        if(browser == "Microsoft Internet Explorer")
        {
            request_type = new ActiveXObject("Microsoft.XMLHTTP");

        }
        else
        {
            request_type = new XMLHttpRequest();

        }
        return request_type;
    }
        var http = createObject();

    //INSERT

    function insert()
    {
        var Faculty2 = encodeURIComponent(document.getElementById("Faculty").value);
        var Major2 = encodeURIComponent(document.getElementById("Major").value); 
        var Professor2 = encodeURIComponent(document.getElementById("Professor").value); 
        var Lastname2 = encodeURIComponent(document.getElementById("Lastname").value); 
        var Course2 = encodeURIComponent(document.getElementById("Course").value);
        var Comments2 = encodeURIComponent(document.getElementById("Comments").value);
        var Grade2 = encodeURIComponent(document.getElementById("Grade").value); 
        var Redflag2 = encodeURIComponent(document.getElementById("Redflag").value);
        var Owner2 = encodeURIComponent(document.getElementById("Owner").value);
    //Location and parameters of data about to be sent are defined

    //Required: verify that all fields are not empty. Use encode URI() to solve some issues about character encoding.
    var params = "Faculty=" + Faculty2 + "&Major=" + Major2 + "&Professor=" + Professor2 + "&Lastname=" + Lastname2 + "&Course=" + Course2 + "&Comments=" + Comments2 + "&Grade=" + Grade2 + "&Redflag=" + Redflag2 + "&Owner=" + Owner2; 

    var url = "prehp/insert.php";
    http.open("POST", url, true);
    //Technical information about the data
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http.setRequestHeader("Content-length", params.length);

    //Now, we send the data
    http.onreadystatechange = function()
    {

        if(http.readyState == 4)
    {   var answer = http.responseText;

    document.getElementById('insert_response').innerHTML = "Ready!" + answer;
    }
    else
    {document.getElementById('insert_response').innerHTML = "Error";
    }}
    http.send(params);
    } 
PHP code:

$insertAccounts_sql = "INSERT INTO Information (Faculty, Major, Professor, Lastname, Course, Comments, Grade, Redflag, Owner)
    VALUES('$_POST[Faculty]','$_POST[Major]','$_POST[Professor]','$_POST[Lastname]','$_POST[Course]','$_POST[Comments]','$_POST[Grade]','$_POST[Redflag]','$_POST[Owner]')"; 

   $dbq = mysql_query($insertAccounts_sql, $dbc); 
   if($dbq)
   {
        print "1 record added: Works very well!";

   }
   else
   if(!$dbq)
   {
       die('Error: ' . mysql_error());
   }

    $dbk = mysql_close($dbc);
    if($dbk)
    {
        print "Database closed!";
    }
    else
    if(!$dbk)
    {
            print "Database not closed!";
    }

I did that but the value that the database got was the raw input and not the encoded input. I'm running out of ideas, don't know what else to try. Could it be the settings of the database, can the database be decoding the input before storing it? That seems far-fetched to me, but I've been looking at this from all angles and still can't come up with a fresh answer.

PS: Sorry for posting my comments on the answer area, first timer here.


when creating query strings, it has really nothing to do with objects or anything like that. All you want to be sending is key/value pairs. how you construct that is up to you, but it often neater and more manageable to assign your values to variables first. i.e.

var myVar1Value = encodeURIComponent(document.getElementById('variable1').value);
var myVar2Value = encodeURIComponent(document.getElementById('variable2').value);
var url = "http://www.mydomain.com?" + "var1=" + myVar1Value + "&var2=" + myVar2Value;

It's called a query string, so it's just a string. what you do with it on the server side is what makes the 'magic' happen.

edit: If you're having problems with values, then you should print them to console to verify you are getting what you expect.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜