При выполнении 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: Извините за размещение моих комментариев в области ответов, первый таймер здесь.