PHP-AJAX多表单Post
在我的PHP应用程序的一个模块中,有多个表单,由服务器端使用唯一的id和名称生成,如“formToProcess1,formToProcess2,…,fromToProcessN”。但是,有两个ajax函数处理每个表单的请求,它们都以字符串形式获取表单名称作为参数,如下所示:PHP-AJAX多表单Post,php,jquery,ajax,arguments,Php,Jquery,Ajax,Arguments,在我的PHP应用程序的一个模块中,有多个表单,由服务器端使用唯一的id和名称生成,如“formToProcess1,formToProcess2,…,fromToProcessN”。但是,有两个ajax函数处理每个表单的请求,它们都以字符串形式获取表单名称作为参数,如下所示: function ajaxReject(formToProcess) { var ajaxRequest; //document.getElementById('divUploadRes
function ajaxReject(formToProcess)
{
var ajaxRequest;
//document.getElementById('divUploadResultAjax').style.display = 'none';
try
{
ajaxRequest = new XMLHttpRequest();
}
catch (e)
{
try
{
ajaxRequest = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e)
{
try
{
ajaxRequest = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e)
{
alert('Something is wrong with your browser, AJAX not working!');
return false;
}
}
}
ajaxRequest.onreadystatechange = function()
{
if(ajaxRequest.readyState == 4)
{
var ajaxDisplay = document.getElementById('divUploadResultAjax');
ajaxDisplay.innerHTML = ajaxRequest.responseText;
//document.getElementById('loadingAjaxIcon').style.display = 'none';
document.getElementById('divUploadResultAjax').style.display = 'block';
}
}
var updName = document.forms['formToProcess'].getElementById('userName').value;
//i'll get other elements values for query string to send if i can get this one first :)
var queryString = '?name=' + updName + '&lastname=' + updLastname + '&bio=' + updBio + '&country=' + updCountry + '&cams=' + updCams + '&fb=' + updFacebook + '&twitter=' + updTwitter + '&processRequest=' + RequestProcess;
alert (queryString);
return;
ajaxRequest.open('GET', 'dashboardUpdateProfile.php' + queryString, true);
ajaxRequest.send(null);
}
#Every form in the php page is generated like following:
echo '
<div id="divUploadResultAjax">
<form name="profileUpdater'. $formCounter .'">
<input type="hidden" id="uluid" name="uluid" value="'.$UL_UploadID.'" />
<table class="tg" style="width: 100%">
<tr>
<td style="font-weight: bold; width: 250px; color: #000000;" colspan="3">
<h3>Upload ID #'.$UL_UploadID.' </h3> (Uploaded On '.$NewCreateDate.')
</td>
...
...
bla bla bla
...
...
----> this is where i call functions in each form.
<input type="button" class="btnRegister" name="updateProfile" onclick="ajaxReject(\'profileUpdater'. $formCounter .'\')" value="Reject" />
<input type="button" class="btnRegister" name="updateProfile" onclick="ajaxApprove()" value="Approve" />
函数ajaxReject(formToProcess)
{
var ajaxRequest;
//document.getElementById('divUploadResultAjax').style.display='none';
尝试
{
ajaxRequest=新的XMLHttpRequest();
}
捕获(e)
{
尝试
{
ajaxRequest=newActiveXObject('Msxml2.XMLHTTP');
}
捕获(e)
{
尝试
{
ajaxRequest=newActiveXObject('Microsoft.XMLHTTP');
}
捕获(e)
{
警报(“您的浏览器有问题,AJAX不工作!”);
返回false;
}
}
}
ajaxRequest.onreadystatechange=函数()
{
if(ajaxRequest.readyState==4)
{
var ajaxDisplay=document.getElementById('divUploadResultAjax');
ajaxDisplay.innerHTML=ajaxRequest.responseText;
//document.getElementById('loadingAjaxIcon').style.display='none';
document.getElementById('divUploadResultAjax').style.display='block';
}
}
var updName=document.forms['formToProcess'].getElementById('userName').value;
//如果我能先得到这个值,我将得到查询字符串要发送的其他元素值:)
变量queryString='?name='+updName+'&lastname='+updLastname+'&bio='+updBio+'&country='+updCountry+'&cams='+updCams+'&fb='+updFacebook+'&twitter='+updTwitter+'&processrequestprocess='+RequestProcess;
警报(查询字符串);
回来
open('GET','dashboardUpdateProfile.php'+queryString,true);
ajaxRequest.send(空);
}
#php页面中的每个表单的生成方式如下:
回声'
上载ID“#”。$UL_UploadID”。(上载于“$NewCreateDate”。)
...
...
呜呜呜呜
...
...
---->这就是我调用每种形式的函数的地方。
我真的不确定出了什么问题。当我用button click调用函数时,它会一直工作到if结束(ajaxRequest.readyState==4),之后,当我试图获取var updName=document.forms['formToProcess'].getElementById('userName').value;函数崩溃。我做错了什么
谢谢。您不能使用类似
var updName=document.getElementById('userName').value代码>
我在表单中找不到username元素?它是否存在于实际代码中?是的,在我的表单中有一个名为userName(input)的元素。我可以通过简单地执行上面提到的方法得到它的值,但是当它在其他形式中多次包含相同的名称时,它只会得到第一个名称,而不会在其他形式中。这就是为什么我需要这样做:document.forms[formName].getElementById('userName').value;但是它不起作用,我被困在这里:(为什么不使用元素名,比如var updName=document.forms[formToProcess].userName.value;
你注意到我没有在formToProcess周围使用getElementById和no'(引号)吗?好吧,它工作起来很有魅力,我有语法错误。非常感谢!