Php $。未正确过帐
我有一个执行ajax POST的函数:Php $。未正确过帐,php,ajax,post,Php,Ajax,Post,我有一个执行ajax POST的函数: function consultaruserID(){ if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.
function consultaruserID(){
if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var userID = document.getElementById('userID').value;
var captcha = document.getElementById('captcha').value;
var token = encodeURIComponent(cToken);
var params = "userID="+userID + "&captcha="+captcha + "&token="+token;
xmlhttp.open('POST','/sys/getdata.php',false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(params);
alert (xmlhttp.responseText);
}
请注意,字符串标记的长度约为2000,并且包含一些特殊字符。因此我使用了encodeURIComponent(cToken)强>
php处理所有数据并返回字符串。工作100%
现在,使用下面的代码在发布后返回SUCCESS,但它不会给我带来getdata.php所期望的字符串
$.post("/sys/getdata.php",
{userID: $('#userID').val(),
captcha: $('#captcha').val(),
token: encodeURIComponent(cToken)
},
function(data,status){
alert("Data: " + data + "\nStatus: " + status);
}
);
在getdata.php上,我调试了来自这两种方法的ajax的$\u帖子。这两种方法似乎都是正确的。然而,处理标记的功能(不是我的)在某种程度上拒绝了ajax
我是不是遗漏了什么
cToken的样本:
var cToken='RadStyleSheetManager1_TSSM=&RadScriptManager1_TSM=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3a33363de7-7c08-435e-ab35-682b2ed2c688%3aea597d4b%3ab25378d2%3bTelerik.Web.UI%3aen-US%3a4701e229-f1c8-4ec4-9c40-b2d233d95d5d%3a16e4e7cd%3af7645509%3a22a6274a%3aed16cbdc%3a11e117d7&__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKLTc1OTk5NDIwOA8WAh4IcHJldkdVSUQFJDlkYWRiODRjLWYyN2YtNDA2Yi04MjE4LWM3MGI4NzY4MmI1NxYCAgMPZBYCAgUPFCsAAw8WBh4FV2lkdGgbAAAAAADAckABAAAAHgZIZWlnaHQbAAAAAADAUkABAAAAHgRfIVNCAoADZBYCHgtDdXJyZW50R3VpZAUkOWRhZGI4NGMtZjI3Zi00MDZiLTgyMTgtYzcwYjg3NjgyYjU3FCsAA2RkFgIeCk1pblRpbWVvdXQCAxYCAgEPZBYIZg9kFgJmD2QWBmYPDxYKHwIbAAAAAAAASUABAAAAHwEbAAAAAACAZkABAAAAHghDc3NDbGFzc2UeCEltYWdlVXJsBVN%2BL1RlbGVyaWsuV2ViLlVJLldlYlJlc291cmNlLmF4ZD90eXBlPXJjYSZndWlkPTlkYWRiODRjLWYyN2YtNDA2Yi04MjE4LWM3MGI4NzY4MmI1Nx8DAoIDZGQCAQ8PFgIeBFRleHQFEUdlcmFyIG5vdmEgaW1hZ2VtZGQCAg8WBB4JaW5uZXJodG1sBQVPdXZpch4EaHJlZgVXfi9UZWxlcmlrLldlYi5VSS5XZWJSZXNvdXJjZS5heGQ%2FdHlwZT1jYWgmYW1wO2d1aWQ9OWRhZGI4NGMtZjI3Zi00MDZiLTgyMTgtYzcwYjg3NjgyYjU3ZAIBDw8WCh8CGwAAAAAAAElAAQAAAB8BGwAAAAAAgGZAAQAAAB8GZR8HBVN%2BL1RlbGVyaWsuV2ViLlVJLldlYlJlc291cmNlLmF4ZD90eXBlPXJjYSZndWlkPTlkYWRiODRjLWYyN2YtNDA2Yi04MjE4LWM3MGI4NzY4MmI1Nx8DAoIDZGQCAg8WBh8JBQVPdXZpch8KBVd%2BL1RlbGVyaWsuV2ViLlVJLldlYlJlc291cmNlLmF4ZD90eXBlPWNhaCZhbXA7Z3VpZD05ZGFkYjg0Yy1mMjdmLTQwNmItODIxOC1jNzBiODc2ODJiNTceB1Zpc2libGVnZAIDD2QWBGYPDxYIHwZlHglBY2Nlc3NLZXllHghUYWJJbmRleAEAAB8DAgJkZAIBDw8WBh8GZR8IBRxUeXBlIHRoZSBjb2RlIGZyb20gdGhlIGltYWdlHwMCAmRkGAIFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQtSYWRDYXB0Y2hhMQULUmFkQ2FwdGNoYTEPFCsAAgUkOWRhZGI4NGMtZjI3Zi00MDZiLTgyMTgtYzcwYjg3NjgyYjU3BgAAAAAAAAAAZC71hndqclnXtz26igXAh8hMTN8v1xbnYlEz5BpnTD2e&__EVENTVALIDATION=%2FwEWAgKQq574CQLYv5ykDAZWk768pXDUic2zwz0szJjtC6%2ByEIHnfkVFizDz0zTL&RadCaptcha1_ClientState=&RadCaptcha1%24CaptchaTextBox=';
您的令牌似乎包含未正确传递的额外参数,请尝试传递数据字符串:
var userID = document.getElementById('userID').value;
var captcha = document.getElementById('captcha').value;
var token = encodeURIComponent(cToken);
var params = "userID="+userID + "&captcha="+captcha + "&token="+token;
$.post("/sys/getdata.php",
params,
function(data,status){
alert("Data: " + data + "\nStatus: " + status);
}
);
你不应该用URI编码
cToken
。当jQuery将您的对象文本转换为查询字符串时,它将自动应用URI编码。Hi,@AZevedo…声明/填充“cToken”的位置以及它的值是什么?Hi!我把它贴在这个主题上。它在HTML头中声明。您不应该对URI编码cToken
。当jQuery将对象文本转换为查询字符串时,它将自动应用URI编码。当您说“token以某种方式从ajax拒绝它”时,这是什么意思?你能胜任这个职位吗?您是否从服务器脚本中收到对帖子的非200响应?问题到底发生在哪里?@MikeBrant谢谢!你说对了!我从ajax中删除了URI编码,它成功了!“我想它是‘双重’编码的。”阿泽维多说得没错。我将添加作为答案。谢谢老兄!就这样!