我慣用jQuery
javascrpit端,以下例子我用setTimeout每5秒跑一次ajax,你也可以自己定出想要ajax的情境
$(function(){
setTimeout(doPost,5000);
})
var doPost= function(){
// $.post是繼承自$.ajax再包裝後的簡化函數
$.post({
url : "your.php",
dataType: "text",
data : {
"act": "postsomething",
"something": thing
}
})
.done(function(d){
console.log(d);// PHP傳回值
setTimeout(doPost,5000);//確定有送回再執行下一個
})
.fail(function(){
setTimeout(doPost,5000);//失敗也要執行下一個
})
};
PHP端
<?php
if(isset($_POST["act"]) && $_POST["act"]=="postsomething") {
$thing = $_POST["something"];
// ... $thing任你處置
echo "....回傳什麼給前端js吧.......";
die();
exit();//停止php
}
?>
JS寫法:
var content=document.getElementById("content");
var xhr=new XMLHttpRequest();
xhr.open("get","./data.txt");
xhr.send();
xhr.onload=()=>{
content.innerText=xhr.responseText;
}
JQ寫法:
$.ajax({
url: '@Url.Action("XXX_Edit", CTRL_XXX)',
data: {
XXX_PK: '',
XXX_KIND: $('#XXX_KIND').val(),
XXX_VALUE: $('#XXX_VALUE').val()
},
type: 'post',
cache: false,
async: false,
dataType: 'json'
}).done((data)=>{
console.log(data);
});
我覺得。你得先搞懂一下前後端。
說說以前教過的人的說法。
當時有人也是知道ajax。知道jquery。
但就是搞不懂。發test的參數,一直要用$test。
我解釋了超多名詞。他還是不懂。
最後沒辦法。只好用另類的說法。
我跟他說,你目前寫的ajax。將它想像成另開一個網頁。
只是這個開出來的網頁。是內部運行的,你看不到的(我當時說背景他不懂)
一樣也是跟用表單一樣。(幸好這傢伙懂表單傳送)
POST發送給php程式。
那php程式要怎麼接值呢?
他才總算回答,用$_POST
以上的故事,看你是否能聽懂。