

Ajax(jQuery) で then または done 内の function からの返り値を、then
以降の後続のプログラムで使用したいのですが、上手くいきません。  
result.then 自体を return してみたり、色々してみましたのですが、、、恥ずかしながらわかりません。

Ajax 自体の通信はできている前提です。  
恐れ入りますが、どなたかご教示いただけましたら幸いです。

以下、省略したコードです。

[code]

    <script src="../js/jquery/jquery-3.3.1.min.js"></script>
    
    <script>
    function ajax_func(post){
            return $.ajax({
            type: 'POST',
            url: 'ajax.php',
            cache: false,
            dataType: 'json',
            data: {
                'greeting':post
            }
            })
        }
    
    var post = 'Hi';
    console.log(post);
    var result = ajax_func(post);
    
    result.then(
        function(data){
            console.log(data);
            if(data != ""){
                return true; // (1) このtrue を受け取りたい
            }
        }
    )
    //(2) true を受け取った処理を書きたい
    
    </script>
    
    
[/code]

ajax.php

[code]

    <?php
    header("Access-Control-Allow-Origin: *");
    
    if (isset($_POST)){
        echo json_encode('Hello');
    }
    
    
[/code]

返り値 は `// (1) このtrue を受け取りたい` の部分で、  
書きたい後続処理は、 `//(2) true を受け取った処理を書きたい` の部分です。

類似と思われる質問も確認しましたが、  
いまいちピンと来ていません。

[Ajaxの返り値を取得する](https://ja.stackoverflow.com/questions/19395/ajax%e3%81%ae%e8%bf%94%e3%82%8a%e5%80%a4%e3%82%92%e5%8f%96%e5%be%97%e3%81%99%e3%82%8b)


CC BY-SA 4.0
2021-04-30T21:32:11.920
75599
2021-05-01T11:24:25.160
2021-04-30T21:47:10.173
45079
45079
question
php jquery ajax
ajax の then の function 中から 返り値を受け取りたい


こちらの１番の方法で自己解決しました。  
もし回答を準備していた方がいらっしゃいましたら、大変失礼いたしました。

[jQueryのajax()を利用すると返り値をとりたいときのやり方 -
Qiita](https://qiita.com/katsukii/items/bd64efcf4f070d77c028)


CC BY-SA 4.0
2021-04-30T22:57:24.510
75602
2021-05-01T11:24:25.160
2021-05-01T11:24:25.160
3060
45079
75599
answer


同じように`then`で繋げば良いです。

[code]

          result
            .then(function (data) {
              console.log(data);
              if (data != "") {
                return true; // (1) このtrue を受け取りたい
              }
            })
            .then(function (retVal) {
              //(2) true を受け取った処理を書きたい
              console.log("retVal: " + retVal);
            });
    
[/code]

[jQuery.ajax() > The jqXHR Object](https://api.jquery.com/jQuery.ajax/#jqXHR)
にある通り、
[`Promise`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise)
という形式です。


CC BY-SA 4.0
2021-05-01T08:58:23.867
75616
2021-05-01T08:58:23.867
2808
75599
answer