大家日安
我本身在寫woocommerce中的hook中,有一個做完checkout後,需要發一個get去其他平台的webservice,然而我對於php中的ajax處理不是很熟悉,爬文了一下,先後做了兩個作法,但是都沒有成功。
我首先找到file_get_contents(),但是發過去看了一下後台資料並沒有新增,也沒有回傳什麼東西,所以我換了另外一個作法。
我在另外新增一個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)
});
謝謝大家耐心看完
我本身在寫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 直接開當然是沒問題的
不過在瀏覽器之外的話..
我是沒有這樣寫過
不過這本身就怪怪的