Jquery通过ajax设置HTML

Mar*_*sen 4 javascript ajax jquery

我有以下范围:

<span class='username'> </span>
Run Code Online (Sandbox Code Playgroud)

为了填充这个我必须从PHP得到一个值因此我使用Ajax:

    $('.username').html(getUsername()); 
    function getUsername(){
    $.ajax({
        type: 'POST',
        url: myBaseUrl + 'Profiles/ajax_getUsername',
        dataType: 'json',
        data: {

        },
        success: function(data){
            document.write(data);
        }
    })
}
Run Code Online (Sandbox Code Playgroud)

现在,当我调试时,我看到返回的data(data)是正确的值,但span标签之间的html 保持不变.

我究竟做错了什么?

小更新

我尝试过以下方法:

    function getUsername(){
    $.ajax({
        type: 'POST',
        url: myBaseUrl + 'Profiles/ajax_getUsername',
        dataType: 'json',
        data: {

        },
        success: function(data){
            $('.username').html('RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRr');
        }
    })
}

getUsername();
Run Code Online (Sandbox Code Playgroud)

标签之间没有html(没有文本),但是当我查看控制台时,方法已经完成并且已经执行.

回答这个小小的更新

错误是在我的Ajax功能中我忘了打印实际的响应!感谢您的所有答案,对于那些正在搜索此问题的人来说,这是我的Ajax功能:

    public function ajax_getUsername(){
    if ($this->RequestHandler->isAjax())
    {
        $this->autoLayout = false;
        $this->autoRender = false;
        $this->layout = 'ajax';
    }
    print json_encode($this->currentClient['username']);

}
Run Code Online (Sandbox Code Playgroud)

请注意我正在使用CakePHP,这就是为什么有一些构建方法.总而言之,只记得print json_encode($this->currentClient['username']);

Ror*_*san 9

您的代码的逻辑流程不太正确.异步函数不能返回任何内容,因为在收到响应时执行将移动到下一个语句.相反,响应所需的所有处理必须在success处理程序中完成.试试这个:

function getUsername() {
    $.ajax({
        type: 'POST',
        url: myBaseUrl + 'Profiles/ajax_getUsername',
        dataType: 'json',
        data: { },
        success: function(data){
            $('.username').html(data); // update the HTML here
        }
    })
}

getUsername();
Run Code Online (Sandbox Code Playgroud)