Я занимаюсь разработкой сайта (только для удовольствия и научиться программировать с JQuery) и я хотел бы знать, что случилось с этим:Ajax запрос скрытые поля
$(window).unload(function(){
var myid = $('input#v1').attr('value'); // hidden
var playauth = $('input#v2').attr('value'); // hidden
var srvid = $('input#v3').attr('value'); // hidden
var result = 'myid='+ myid +'&auth='+ playauth +'&srvid='+ srvid;
$.ajax({
type: "GET",
data: result,
url: "closing.php",
complete: function(data) {
alert(data.responseText);
}
});
});
Я пытаюсь обновить таблица базы данных. Когда я закрываю окно, ничего не происходит. С предыдущей версией этой функции:
window.onunload = function() {
var xhReq = new XMLHttpRequest();
var n = document.getElementById("v1").InnerHTML;
var o = document.getElementById("v2").InnerHTML;
var p = document.getElementById("v3").InnerHTML;
xhReq.open("GET", ("closing.php?myid=" + n + "&auth=" + o + "&srvid=" + p) , false);
xhReq.send(null);
var serverResponse = xhReq.responseText;
alert(serverResponse);
};
.. я видел предупреждение ответа, но ПОЛУЧИТЬ значения были «неопределенное». .... возможно, потому что тип входов скрыт ..? Это моя форма ... может быть, я чего-то пропустил? Я действительно новичок в jquery/ajax .. пожалуйста, помогите !!
<form method="get">
<input id="v1" type="hidden" name="val1" class="aget" value="<?php echo $_GET['myid']; ?>" />
<input id="v2" type="hidden" name="val2" class="bget" value="<?php echo $_GET['playauth']; ?>" />
<input id="v3" type="hidden" name="val3" class="cget" value="<?php echo $_SESSION['srvid']; ?>" />
</form>
Одно предупреждение, когда увольнение ajax/xhttp отменяется при событии разгрузки, нет гарантии, что запрос пройдет до его отмены, когда браузер закрывает страницу. Лучше всего использовать '' onbeforeunload'', а также настроить ваш ajax-вызов на синхронный, используя параметр 'async: false' ... Однако я никогда не делал этого. – Pebbl
ваше предложение было хорошим ... но функция не работает ... мне нужно положить ее внутри $ (document) .ready ... и т. Д.? – lollo
Какая функция, на которую вы ссылаетесь, не работает? Если вы имеете в виду ваш «полный» обратный вызов, может случиться так, что браузер блокирует дальнейшие js от запуска сразу после завершения синхронного вызова ajax ... Вы вызываете хотя бы? Shut.php? В основном то, что вы пытаетесь сделать, всегда будет сложным, особенно если вы полагаетесь на дальнейшую обработку в значительной степени, так как пользователь хочет покинуть страницу. Установка ajax-вызовов на syncronous также может быть немного опасной, потому что если запрос зависает по какой-либо причине, то и браузер. – Pebbl