Я читаю книгу, в которой описывается процедура реализации Ajax через запрос POST. Это код:Реализация AJAX через POST-запрос
Имя файла: ajaxtest.html
<html>
<head>
<title>AJAX Example</title>
<script type="text/javascript" src ="xhr.js"></script>
</head>
<body>
<h1>LOADING A WEBPAGE INTO A DIV</h1>
<div id="info">This is going to be replaced </div>
<script type="text/javascript">
url = "ajaxtest.php"
params = "url=oreilly.com"
request = new ajaxRequest()
request.open("POST",url,true)
request.setRequestHeader("Content-type", "application/x-wwww-form-urlencode")
request.onreadystatechange = function()
{
if(this.readyState == 4)
{
if(this.status == 200)
{
if(this.responseText != null)
{
document.getElementById('info').innerHTML = this.responseText
}
else
{
alert("Ajax error: No data received ")
}
}
else
{
alert("Ajax Error " + this.statusText)
}
}
}
request.send(params)
</script>
</body>
</html>
пример того, что книга также имеет 2 линии я удалить после прочтения некоторых других статей:
request.setRequestHeader("Content-length", params.length)
request.setRequestHeader("Connection", "close")
Функция ajaxRequest сохраняется в отдельном файле .js с именем xhr.js:
function ajaxRequest()
{
try
{
// fon NON-IE browsers
var request = new XMLHttpRequest()
}
catch(e1)
{
try
{
//for IE6+ browser
var request = new ActiveXObject("Msxml2.XMLHTTP")
}
catch(e2)
{
try
{
//for IE5
var request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch(e3)
{
//No AJAX support
var request = false
}
}
}
return request
}
И ajaxtest.php файл:
<?php
if(isset($_POST['url']))
{
echo file_get_contents("http://".$_POST['url']);
echo "test1";
}
echo "test2";
echo $_POST['url'];
?>
Дело в том, что, как только я выполняю ajaxtest.html, часть «Это собирается быть заменен », он исчезает (это правильно), но после этого я получаю часть ajaxtest.php, которая находится за пределами if (isset()). И когда он достигает эхо $ _POST [ 'URL'] вне если (Исеть()) я получаю следующее сообщение об ошибке:
Примечание: Undefined индекс: URL в C: \ WAMP \ WWW \ ajaxtest.php on line 11
Ofcourse test2 напечатан на странице.
Почему это происходит? Не должно быть $ _POST ['url'] может быть доступно в скрипте ajaxtest.php?
Tanatos, теперь он работает. Есть ли учебник, объясняющий процедуру кодирования/декодирования, упомянутую выше? Причина в книге, которую я читаю, не вижу ничего похожего. – christostsang
Хорошо, помните, если вы отправляете строки, которые могут включать пустые пространства, тире, запятые или любые не буквенно-цифровые символы, через запрос URL-адреса нужно закодировать (по запросу url я имею в виду get или javascript ajax). Что касается кодирования/декодирования, на основе функций, которые вы можете найти в коде выше, вы также сможете найти противоположные функции. Удачи вам в обучении! :) – Tanatos
@ Тантос: проще запомнить: если вы пишете URL-адрес, он должен быть URL-адресом, поэтому URL-адрес закодирован. Если вы пишете HTML, он должен быть HTML, поэтому HTML закодирован. Если вы пишете JS, он должен быть JS, поэтому JS закодирован. И так далее. Это всегда, когда-то, это то, что закодировано. Everthing еще кодирует, как стрельба из дробовика. Неточность, высокий уровень воздействия и многие последующие вопросы отладки на SO после этого. – hakre