我正在将现有平台迁移到新服务器。我借此机会升级PHP ect并标准化/调试代码,因为以前的维护人员有不同的标准。
我现在选择了PHP版本5.4.33,一旦我成功地将所有内容转移到mysqli,我将寻求更新的版本。我不认为任何服务器端会对AJAX/JS产生影响?据我所知,它不是客户端吗?
由于我已经转移了代码,我在AJAX/JS方面遇到了问题。我在AJAX/JS方面不是最棒的,需要一些帮助。尽管每个提交在整个平台上的工作方式不同,但我不想删除已经存在的AJAX/JS。我很可能会把它作为一个机会来学习如何使用它,因为它可以让最终用户体验更流畅。
使用Chrome进行调试时,我在单击"保存"按钮时收到以下错误:
Uncaught TypeError: Cannot set property 'display' of undefined
email_user
onclick
这是保存按钮代码
<span id="loading" style="color: red; font-size: x-small; display: none; text-decoration: blink;">Loading... Please wait..</span><input type="button" value="Save" class="save" onclick="if(validate()){ email_user(); }" />
这是validate()的函数代码
function validate() {
var errorString = "";
if(isBlank(document.getElementById("forename").value)) {
errorString += " - Please input a forenamen";
}
if(isBlank(document.getElementById("surname").value)) {
errorString += " - Please input a surnamen";
}
if(isBlank(document.getElementById("company_name").value)) {
errorString += " - Please select a companyn";
}
if(document.getElementById("username").value != "" || document.getElementById("password").value != "") {
if(isBlank(document.getElementById("username").value)) {
errorString += " - Please input a usernamen";
}
if(isBlank(document.getElementById("password").value)) {
errorString += " - Please select a passwordn";
}
}
//if not a solicitor then cases mandatory
if(document.getElementById("company_role_type_id").value == 2) {
if(document.getElementById("other_view_if").value == "") {
errorString += " - Please select who can view your casesn";
}
}
if(document.getElementById("company_role_type_id").value == 3) {
if(document.getElementById("other_view_ea").value == "") {
errorString += " - Please select who can view your casesn";
}
}
if(errorString) {
alert('Please correct the following items:-nn'+ errorString);
return false;
}
else {
return true;
}
}
这是email_user()的功能代码
function email_user(){
if(skip_email == true){ $('user').submit(); }
var url = 'email_user.php';
var params = '?' + $('user').serialize() + '&from_edit=1';
$('loading').style.display = 'inline';
var myAjax = new Ajax.Request(
url,
{
method: 'get',
parameters: params,
onComplete: show_response
});
function show_response(this_request){
//alert(this_request.responseText);
var reply = this_request.responseText.evalJSON(true);
if(reply['status'] == false){ var blah = ''; }
else{ alert(reply['message']); }
//$('loading').style.display = 'none';
$('user').submit();
}
}
仔细想想,也许这更多地与Apache版本有关??以防万一Apache版本是2.2.15。
你们能给我的任何帮助都将不胜感激!如果你需要更多信息,请告诉我。
诚挚的问候,
n00b包装
如前所述,您的代码存在一些问题,您的行(触发错误的行)可以通过以下方式进行优化:
$('#loading').css("display","inline"); //Selector is ok now...
另一方面,我还注意到您有第二个选择器$('user'),它不起作用。请记住,任何没有点或尖的东西都将被视为元素选择器(加载和用户元素,除非您创建,否则不会存在于文档中。
记住:
$("#myId") //id selector
$(".myClass") //class selector
如果表单名称为"user",则代码可能有效。请记住,您希望捕获表单提交事件。
问候,
Guillermo
是否尝试将$('loading')
更改为$('#loading')
?