開發(fā)背景:
在開發(fā)中采用了一個新的架構,將大部分客戶的留言功能集成到一個公共API提交保存,采用不同的用戶名區(qū)分,供客戶查詢自己網(wǎng)站的留言,這樣節(jié)約了客戶網(wǎng)站的資源,也提升了維護性。
那么在提交時不能采用直接的post提交,否則會產(chǎn)生跳轉(zhuǎn),使訪客混亂,所以采用ajax提交留言內(nèi)容至公共服務器:http://wx.igooda.cn/index.php/messagesave,但嘗試后發(fā)現(xiàn)不能提交post請求,百度后查詢結果是跨域只能是get請求,這對留言內(nèi)容多的來說,是不可行的。還有一種解決方案是采用jsonp請求,原理是在頁面中建立一個script腳本,導入外部腳本,再將外部腳本轉(zhuǎn)換為結果反饋,這樣的方法也不能夠很好的解決。
開發(fā)思路:
雖然javascript的跨域有限制,但php可以跨域提交post請求,所以在網(wǎng)站內(nèi)建立一個api,做為post的中轉(zhuǎn)站,在提交給遠程服務器,這樣就可以完成跨域post請求。
開發(fā)步驟:
1、修改表單
將form的action指向網(wǎng)站內(nèi)的 api.php,建立一個隱藏字段:
<input type="hidden" name="request_url" value="跨域的api地址">
2、建立企業(yè)網(wǎng)站內(nèi)的 api.php
function Post($url, $post = null) {
if (is_array($post)) {
ksort($post);
$content = http_build_query($post);
$content_length = strlen($content);
$options = array(
'http' => array(
'method' => 'POST',
'header' =>
"Content-type: application/x-www-form-urlencoded\r\n" .
"Content-length: $content_length\r\n",
'content' => $content
)
);
return file_get_contents($url, false, stream_context_create($options));
}
}
$request_url = $_POST['request_url'];
$response = Post($request_url , $_POST);
echo $response;
3、ajax提交請求吧!相關的javascript代碼請查看下面的案例里的源代碼。
演示地址:
這個客戶的網(wǎng)站就是采用了這樣的機制,前端代碼可以通過查看源碼找到。
另:這個客戶網(wǎng)站新增了一個功能,就是通過在線留言后,后臺自動通過企業(yè)的微信公眾平臺給企業(yè)的客戶發(fā)送一條微信提醒,十分方便。
哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費用,即可穩(wěn)步提升排名至首頁。歡迎體驗最佳的哈爾濱網(wǎng)站建設。
