iT邦幫忙

0

wordpress 中寄發get請求

Rach 2019-10-27 21:00:161240 瀏覽

大家日安

我本身在寫woocommerce中的hook中,有一個做完checkout後,需要發一個get去其他平台的webservice,然而我對於php中的ajax處理不是很熟悉,爬文了一下,先後做了兩個作法,但是都沒有成功。

首先是這個

我首先找到file_get_contents(),但是發過去看了一下後台資料並沒有新增,也沒有回傳什麼東西,所以我換了另外一個作法。

call 另一個php

我在另外新增一個php,並且裡頭用了js的fetch來接,直接開上去測試是正常的,但是要把他include就有問題了,程式也沒有報錯,讓我掛的一頭霧水。

我在我的cb是這樣呼叫我的template,不知道是否是在include之後,這個thread就釋放了的關係,下面有些我程式碼的片段與說明,請各位大大賜教qq

<?php
    add_action('woocommerce_checkout_update_order_meta', 'before_checkout_create_order', 20, 2);
    //這個hook會在結帳後,meta更新完畢觸發
    function before_checkout_create_order( $order_id, $data ) {
    $new_serial_number = 15;
    ob_start();
    include(__DIR__."/action/insert.php");
    ob_clean();
    }
?>
// action/insert.php
<script> 
let serialnumber = "<?php echo $new_serial_number;?>";
</script>
<script src="<?php echo __DIR__."./script.js";?>"></script> 
// js片段程式碼,在單獨開啟insert的時候,是運作正常的
fetch(`https://webserice.com?serialnumber=${serialnumber}`)
  .then(res => { return res.json() })
  .then(v => {
    // alert(v.message);
    //form_this.reset(); 
  })
  .catch(err => {
    // alert("fucccck it later.");
    console.log(err)
  });

謝謝大家耐心看完

淺水員 iT邦大師 6 級 ‧ 2019-10-28 00:28:45 檢舉
php 要發送 request 的話可以用 curl 函式庫處理
https://www.php.net/manual/en/book.curl.php
能夠處理的事情比較多
(例如可以設定header內容)
Rach iT邦新手 4 級 ‧ 2021-04-21 13:45:51 檢舉
給2021的更新,現在woocommerce有web hook的方式可以處理,可以直接綁要送出的資料相關,可以很低成本的做連結
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
dragonH
iT邦超人 5 級 ‧ 2019-10-27 22:07:41

我本身在寫woocommerce中的hook中,有一個做完checkout後,需要發一個get...

如果你確定是需要發 get request 的話

<?php
  $url = "https://postman-echo.com/get?foo1=bar1&foo2=bar2";
  $result = file_get_contents($url);
  print_r($result);

這樣的 code 應該是可以成功的

我在另外新增一個php,並且裡頭用了js的fetch來接,直接開上去測試是正常的

你指的 "直接開上去"

該不會是說直接用 browser 開啟你的 insert.php 吧

用 browser 直接開當然是沒問題的

不過在瀏覽器之外的話..

我是沒有這樣寫過

不過這本身就怪怪的

Rach iT邦新手 4 級 ‧ 2019-10-28 20:10:16 檢舉

嗨大大,我說的直接開啟是掛上去server後,去開那一張php的意思,我再一次測試file_get_contents,依舊是沒有辦法動作的呢QQ我也覺得怪怪的,不過目前沒有什麼好一點想法可以丟get request

dragonH iT邦超人 5 級 ‧ 2019-10-28 20:19:15 檢舉

Rach

那把你 file_get_contents 拿到的東西

print 出來

我要發表回答

立即登入回答