未捕获的TypeError:无法设置属性' display'未定义的

时间:2014-10-16 14:02:24

标签: javascript php jquery ajax

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

2 个答案:

答案 0 :(得分:2)

正如之前在评论中所述,您的代码存在一些问题,您的行(触发错误的行)可以通过以下方式进行优化:

$('#loading').css("display","inline"); //Selector is ok now... 

另一方面,我也注意到你有第二个选择器$('用户')不起作用。请记住,没有圆点或尖锐的任何东西都将被视为元素选择器(加载和用户元素,除非您创建它,否则不会存在于文档中。

记住:

$("#myId") //id selector
$(".myClass") //class selector

如果“user”是表单名称,则代码可能有效。请记住,您希望捕获表单提交事件。

此致

吉列尔莫

答案 1 :(得分:-1)

尝试将$('loading')更改为$('#loading')