Что именно я посылаю через параметры? - PullRequest
1 голос
/ 28 июня 2011

При выполнении XMLHttpRequest и использовании POST в качестве метода формы, что именно я отправляю?Я знаю, что это должно быть как отправить (параметры), параметры = "variable1 = Hello", например.Но что, если я хочу сделать это:

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

переменная1 является идентификатором ввода формы HTML.

Могу ли я сделать это так или мне нужно присвоить значение encodeURIComponent дляпеременную javascript и отправьте эту переменную:

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

Предполагается, что вы отправляете объект и его значение, но это объект из формы HTML, объект javascript или объект php?Проблема в том, что я уже попробовал это сделать, и все еще не могу получить закодированный ввод в моей базе данных, все, что я получаю, это необработанный ввод от пользователя.

Кстати, я знаю, что это довольно скучный вопрос, ночувствую необходимость точно понять, что я делаю, если я хочу найти решение.


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!";
    }

Я сделал это, но ценность, которую получила база данныхбыл необработанный ввод, а не кодированный ввод.У меня заканчиваются идеи, не знаю, что еще попробовать.Может ли это быть настройками базы данных, может ли база данных декодировать ввод перед сохранением?Это кажется мне надуманным, но я смотрю на это со всех сторон и до сих пор не могу придумать новый ответ.

PS: Извините за размещение моих комментариев в области ответов, первый таймер здесь.

1 Ответ

0 голосов
/ 28 июня 2011

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

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

Это называется запросом строка , так что это просто строка. то, что вы делаете с ним на стороне сервера, - это то, что заставляет «волшебство» происходить.

edit: Если у вас есть проблемы со значениями, вы должны распечатать их в консоли, чтобы убедиться, что вы получаете то, что ожидаете.

...