Php ajax请求隐藏字段

Php ajax请求隐藏字段,php,jquery,Php,Jquery,我正在开发一个网站(只是为了好玩和学习使用jquery编程) 我想知道这有什么问题: $(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

我正在开发一个网站(只是为了好玩和学习使用jquery编程) 我想知道这有什么问题:

$(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); 
};
。。我看到了响应警报,但GET值“未定义”。 .... 可能是因为输入类型是隐藏的。。? 这是我的表格。。。也许我错过了什么??我对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> 

改变

 var myid = $('input#v1').attr('value');   // hidden
 var playauth = $('input#v2').attr('value');   // hidden
 var srvid = $('input#v3').attr('value');      // hidden

改变

 var myid = $('input#v1').attr('value');   // hidden
 var playauth = $('input#v2').attr('value');   // hidden
 var srvid = $('input#v3').attr('value');      // hidden

你必须使用

.val()
而不是
.attr('value')

您必须使用


.val()
而不是
.attr('value')

没有,我有相同的结果..:(没什么,我有同样的结果……:(警告一句,当在卸载事件上触发ajax/xhttp调用时,无法保证在浏览器关闭页面时请求被取消之前能够通过。最好使用
'onbeforeunload'
,并使用
async:false
参数将ajax调用设置为syncronous…我还没有找到。)r自己也尝试过这样的事情。你的建议很好…但是函数不起作用…我必须把它放在$(文档)中吗.ready…等…?您指的是哪个函数不起作用?如果您指的是
完成
回调,那么可能是在同步ajax调用结束后,浏览器阻止任何进一步的js直接运行…您是否至少调用了
closing.php
?基本上,您正在尝试做的事情总是在进行这很棘手,尤其是当用户想要离开页面时,你需要做进一步的处理。将ajax调用设置为syncronous也可能有点危险,因为如果请求因任何原因挂起,浏览器也会挂起……明白了!我用分号代替了pebbl建议的逗号插入行。现在我明白了回答谢谢你…啊,我明白了…好的旧语法错误:)确保考虑到其他两个答案。如果你想用“jQuery方式”做事,你应该在代码中使用.val()…祝项目好运!警告一句,当在卸载事件上触发ajax/xhttp调用时,不能保证在浏览器关闭页面时取消请求之前请求会通过。最好使用
'onbeforeunload'
并使用
异步:false将ajax调用设置为syncronouse> 参数…我自己从来没有尝试过这样的事情。你的建议很好…但是函数不起作用…我必须把它放在$(文档)中吗.ready…等…?您指的是哪个函数不起作用?如果您指的是
完成
回调,那么可能是在同步ajax调用结束后,浏览器阻止任何进一步的js直接运行…您是否至少调用了
closing.php
?基本上,您正在尝试做的事情总是在进行这很棘手,尤其是当用户想要离开页面时,你需要做进一步的处理。将ajax调用设置为syncronous也可能有点危险,因为如果请求因任何原因挂起,浏览器也会挂起……明白了!我用分号代替了pebbl建议的逗号插入行。现在我明白了回答谢谢你…啊,我明白了…好的旧语法错误:)确保你考虑了其他两个答案。如果你想用“jQuery方式”做事,你应该在代码中使用.val()。祝项目好运!