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']);
您的代码的逻辑流程不太正确.异步函数不能返回任何内容,因为在收到响应时执行将移动到下一个语句.相反,响应所需的所有处理必须在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)