5

你们中的任何人都可以看到为什么 div (#welcome) 没有在下面的代码中更新吗?

function show_logged_in(success)
{

    var is_logged_in = success;

    var dataString = {"reg":invalid, "login":invalid,"is_logged_in":is_logged_in};

    $.ajax({
        type:"POST",
        url:"PHP/class.ajax.php",
        data:dataString,
        dataType:'JSON',
        success: function(username) {
            alert("User is shown");
            user = username;
            change_div();
        },
        error: function() {
            alert("ERROR in show_logged_in")
        }
    });

function change_div(){
    $('#welcome').style.display = 'block';
    $('#welcome').innerHTML = "Welcome" + user + "to SIK";
    }

}

来自被调用的 ajax 的响应只是从会话变量中获取用户名。它正在正确返回。

当它返回时,我希望 div 出现并表示欢迎。但由于某种原因,div 没有被更新。

这是html:

<div id="welcome" style="display:none; postion:absolute; top:0; float:right;">...</div>

4

5 回答 5

5

你不能做

$('#welcome').style.display = 'block';
$('#welcome').innerHTML = "Welcome" + user + "to SIK";

用jQuery。这是因为$('#welcome')你抓取的是 jQuery 对象,而不是 DOM 元素。

要使用 jQuery 执行此操作:

$('#welcome').html('Welcome' + user + 'to SIK').show(); // Brought up in comments

$('#welcome').show(); // Old
$('#welcome').html('Welcome' + user + 'to SIK'); // Old

或者如果你真的想获取 DOM 元素:

$('#welcome')[0].style.display = 'block';
$('#welcome')[0].innerHTML = "Welcome" + user + "to SIK";
于 2013-03-20T11:59:36.657 回答
1

@Jeff Shaver是对的,但user作为参数传递change_div(user);

然后

function change_div(user){
       $('#welcome').show();
       $('#welcome').html('Welcome' + user + 'to SIK');
}
于 2013-03-20T12:01:10.697 回答
1

试试这个朋友。。

$.ajax({
        type:"POST",
        url:"PHP/class.ajax.php",
        data:dataString,
        dataType:'JSON',
        success: function(username) {
            alert("User is shown");
            user = username;
            change_div(user);
        },
        error: function() {
            alert("ERROR in show_logged_in")
        }
    });

function change_div(user){
    $('#welcome').css("display","inline");
    $('#welcome').append("Welcome" + user + "to SIK");
    }
于 2013-03-20T12:28:15.080 回答
0

显示属性不存在。

$('#welcome').style.display = 'block';

改用这个:

$('#welcome').css({"display":"block"});
于 2013-03-20T12:03:16.763 回答
0

我会用这段代码坚持纯 JS。

var welcome = document.getElementById('welcome');

function change_div(){
    welcome.innerHTML = "Welcome" + user + "to SIK";
    welcome.style.display = 'block';
}
于 2013-03-20T12:05:06.353 回答