未捕获类型错误: 无法设置未定义的属性'display'



我正在将现有平台迁移到新服务器。我借此机会升级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')

相关内容

最新更新