| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Gluchik 01.09.2009 16:47
Я упростил до минимума и этот файл и обработчик.###########################################################################
@auto[]
###########################################################################
@main[]
<html>
<head></head>
<body>
<script type="text/javascript" language="JavaScript"
src="^file:find[JsHttpRequest.js]"></script>
^js[^file:find[_js_http_request_load.html]?static=abc]
<form style="padding:2px" enctype="multipart/form-data">
Text: <input type="text" name="q" value="1251803214">
<input type="hidden" name="werty" value="-w-">
<input type="hidden" name="a" value="_ok_">
<i>Type "error" to show debug capabilities.</i><br>
<input type="button" onclick="request('form', 'post', this.form, 'custom data!')" value="form">
<input type="image" src="../images/test_button.jpg" onclick="request('form', 'post', this.form, 'custom data!')" value="form">
</form>
<div id="result" style="border:1px solid #000; padding:2px">
Result
</div>
<div id="debug" style="border:1px dashed red; padding:2px">
Debug
</div>
</body>
</html>
@js[sLoaderUri]
<script>
// Called on button press.
function request(loader, method, data, data2) {
// Create new JsHttpRequest object.
var req = new JsHttpRequest();
// Code automatically called on load finishing.
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.responseJS) {
// Write result to page element.
document.getElementById('result').innerHTML = req.responseJS.a;
}
// Write debug information too.
document.getElementById('debug').innerHTML = req.responseText;
}
}
// Allow caching (to avoid different server queries for
// identical input data). Caching is always disabled if
// we are uploading a file.
req.caching = false;
// Prepare request object.
req.loader = loader;
req.open(method, '$sLoaderUri', true);
// Send data (random JavaScript hash).
var data = {
q: data
};
req.send(data);
}
</script>
@postprocess[body]
^taint[as-is][$body]И его обработчик @main[]
^use[^file:find[JSHttpRequest.p]{JSHttpRequest.p}]
^try{
# äåêîäèðóåì ïðèøåäøèå äàííûå. ðåçóëüòàò ïîëó÷àåì â âèäå õåøà
$hRequest[^JSHttpRequest:decodeRequest[]]
^hRequest.werty.save[append;JSHttpRequest1.log]
^hRequest.a.save[append;JSHttpRequest1.log]
$hParserVariable[
$.a[$hRequest.a]
]
$sDebugMessage[$hRequest.werty]
}{
$exception.handled(true)
$sDebugMessage[error]
}
^JSHttpRequest:printResponse[$sDebugMessage;$hParserVariable]В таком виде, обработчик получает данные формы и записывает их в файл в обоих случаях.