使用jquery更改异步操作中的文本值

changing text value in async action using jquery

本文关键字:文本 异步操作 jquery 使用      更新时间:2023-09-26

内部视图我有

  <a onclick="myAction(@item.Id)" id="myActionId">@actionText</a>

<a id="myActionId" onclick="myAction(21)">Activate</a>

将id发送给mvc控制器进行进一步处理的功能。作为控制器的响应,我得到了字符串数据,这些数据应该用于在不重新加载页面的情况下更改按钮文本。

<script type="text/javascript">              
  function myAction(someId){
        $.ajax({
            method: "POST",
            url: "/mydata/someaction/",
            data: { id: someId}
        }).done(function( msg ) {
            $("#myActionId").text(msg);            
        });
    }    
</script>

我在done(函数(msg))中收到了正确的文本,但按钮文本没有更新为该值。我在这里做错了什么?

用户$('#mybutton').val("My NEW Text");
看看演示

ajax方法默认为Asynchronous:true。在您的代码中,myAction(someId)函数为return as true default。因此,在从ajax方法获得结果之前,您的MyAction()函数处于非活动状态。因此,您无法在锚标记中设置文本。

<script type="text/javascript">              
function myAction(someId){
    $.ajax({
        method: "POST",
        url: "/mydata/someaction/",
        async: false,
        data: { id: someId}
    }).done(function( msg ) {
        $("#myActionId").text(msg);            
    });
}