我正在将现有平台迁移到新服务器。我借此机会升级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 forename\n";
}
if(isBlank(document.getElementById("surname").value)) {
errorString += " - Please input a surname\n";
}
if(isBlank(document.getElementById("company_name").value)) {
errorString += " - Please select a company\n";
}
if(document.getElementById("username").value != "" || document.getElementById("password").value != "") {
if(isBlank(document.getElementById("username").value)) {
errorString += " - Please input a username\n";
}
if(isBlank(document.getElementById("password").value)) {
errorString += " - Please select a password\n";
}
}
//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 cases\n";
}
}
if(document.getElementById("company_role_type_id").value == 3) {
if(document.getElementById("other_view_ea").value == "") {
errorString += " - Please select who can view your cases\n";
}
}
if(errorString) {
alert('Please correct the following items:-\n\n'+ 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。
你们可以给我的任何帮助将不胜感激!如果您需要更多信息,请告诉我。
亲切的问候,
n00bstacker
答案 0 :(得分:2)
正如之前在评论中所述,您的代码存在一些问题,您的行(触发错误的行)可以通过以下方式进行优化:
$('#loading').css("display","inline"); //Selector is ok now...
另一方面,我也注意到你有第二个选择器$('用户')不起作用。请记住,没有圆点或尖锐的任何东西都将被视为元素选择器(加载和用户元素,除非您创建它,否则不会存在于文档中。
记住:
$("#myId") //id selector
$(".myClass") //class selector
如果“user”是表单名称,则代码可能有效。请记住,您希望捕获表单提交事件。
此致
吉列尔莫
答案 1 :(得分:-1)
尝试将$('loading')
更改为$('#loading')
?