jQuery用函数返回值更改文本

时间:2018-01-30 20:59:28

标签: javascript php jquery

我想用类"容器"更改每个div的文本。 我有一个函数test1,它会在单击一个按钮后调用。 此函数应使用函数test2的返回值更改文本。但文本不会改变。 alert(result)显示了我期望的正确文字。我该如何解决这个问题?

<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>


function test1() {
   $( ".container" ).each(function() { 
      $( ".container" ).text(test2('MyValue'));
   })
}

function test2(value) {  
   $.getJSON("ajax.php", {
      value: value
   }, function(result) {
        alert(result);
        return result;  
   })
}

1 个答案:

答案 0 :(得分:1)

在AJAX完成之前,您无法更改文本。Promises是一个很好的解决方案..

<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>
<div class="container">Some text</div>


function test1() {
   test2('myValue').then(res=>$( ".container" ).text(res))
}

function test2(value) { 
   return new Promise(done=>
   $.getJSON("ajax.php", {
      value: value
   }, function(result) {
        done(result); 
   }));
}