0

請問一下
我目前需要一個功能是ajax與curl來回互動至少會五次
比如說我
ajax -> call.php
此時會回給我 200
就會回傳給我
我就要再打另一個 call2.php
假設再給我200 我就在打 call3.php
php裡面都是 curl 跟外部server的互動(打別人的API)
請問這要怎麼實現?

補充
這是第一隻API要打的,以及要給的data
clipboard.png

我還有好幾隻要打,
那這邊該怎麼寫才對?
我這個ajax是透過 click 觸發事件的

我以為是在

success: function( data ){
            // 這裡面打第二個API
          },

只是這樣我打五次就會有五層了,似乎不太妥當?
有沒有高手可以教教我呢

查看全部 3 个回答

2

首先,如果你的这个功能需要呼叫3个以上的api来完成的话,建议你重新考虑一下功能的设计。从开发的角度讲,这种模式效率低,维护率高。
其次,如果你不需要针对每个成功呼叫的结果做处理,那么建议你用一次呼叫calls.php,然后在这个文件里面执行三次curl呼叫不同的api. 如果你需要针对每个成功呼叫的结果做处理,在js端你可以考虑Promise来完成。比如:

 Promise.all([
            fetchContent(posts.curId),
            fetchContent(posts.next()),
            fetchContent(posts.next())
        ]).then((contents) => {
            // 返回值;
            contents.forEach((content) => {
                console.log(content); 
            });
        }).then(() => {
            console.log('完成);
        }).catch((err) => { // 错误
            console.error(err);
        });
        
    function fetchContent(postId) {
        console.log('开始呼叫');
        return new Promise((resolve, reject) => {
            window.fetch(`http://mydomain.com/posts/${postId}`,{
                    method: 'GET'
            }).then((response) => {
                resolve(response.text());
            }, (err) => {
                reject(err);
            });
        });
    };

推荐答案

2

已采纳

你可以ajax请求一次,但是curl你可以等第一个的执行结果出来之后在执行第二个,知道达到你的终止条件,然后把结果返回给ajax

clipboard.png