註意:這裡的跨域指不到同一功能變數名稱下,包括一級與二級功能變數名稱,這裡也認為不在同域下 從A網站把信息以Post的方式發送到B網站,這種過程叫做跨域POST,相類的,A網站把B網站的信息獲取回來,一般稱為跨域GET請求,而對於後者可以通過非同步方式實現,在jq里封裝了jsonp,用它來實現非同步跨域請求;而非同步跨域 ...
註意:這裡的跨域指不到同一功能變數名稱下,包括一級與二級功能變數名稱,這裡也認為不在同域下
從A網站把信息以Post的方式發送到B網站,這種過程叫做跨域POST,相類的,A網站把B網站的信息獲取回來,一般稱為跨域GET請求,而對於後者可以通過非同步方式實現,在jq里封裝了jsonp,用它來實現非同步跨域請求;而非同步跨域POST是不可以被實現的,下麵我們通過實例來說明。
一 非同步跨域
JS代碼用來實現跨域GET和跨域POST,代碼如下:(從www.post.com功能變數名稱下訪問二級域成file.post.com)
<script type="text/javascript"> $.ajax({ type: "GET", dataType: "jsonp", url: "http://file.post.com/Home/GetInfo", success: function (data) { alert(data); } }) $("#btnsubmit").click(function () { alert("操作..."); $.ajax({ type: "POST", url: "http://file.post.com/home/create2", data: { commentTitle: $("#CommentTitle").val(), commentInfo: $("#CommentInfo").val() }, success: function (data) { alert(data); } }) }); </script>
表單如下:
<fieldset> <legend>Product_Comment</legend> <div class="editor-label"> @Html.LabelFor(model => model.ProductID) </div> <div class="editor-field"> @Html.EditorFor(model => model.ProductID) @Html.ValidationMessageFor(model => model.ProductID) </div> <div class="editor-label"> @Html.LabelFor(model => model.UserID) </div> <div class="editor-field"> @Html.EditorFor(model => model.UserID) @Html.ValidationMessageFor(model => model.UserID) </div> <div class="editor-label"> @Html.LabelFor(model => model.CommentTitle) </div> <div class="editor-field"> @Html.EditorFor(model => model.CommentTitle) @Html.ValidationMessageFor(model => model.CommentTitle) </div> <div class="editor-label"> @Html.LabelFor(model => model.CommentInfo) </div> <div class="editor-field"> @Html.EditorFor(model => model.CommentInfo) @Html.ValidationMessageFor(model => model.CommentInfo) </div> <p> <input type="button" value="Create" id="btnsubmit" /> </p> </fieldset>
當載入頁面後,通過firebug可以看到,使用jsonp的GET請求,返回了正確的信息:
而請求非同步表單提交後,資料庫里並沒有記錄,就是說非同步不支持跨域POST
二 同步跨域
我們將表單按鈕類型改為submit,讓表單同步提交到其它域中
通過實驗表明,同步表單的POST操作是可以的,當然這是正常的,向淘寶的支付介面也是通過同步POST來實現的,呵呵!
資料庫中的信息如下:
恩,現在您應該對跨域POST有一個明確的認識了吧,對於同步表單POST,沒有任何問題,而非同步的POST,則受到了限制,無論是二級功能變數名稱還是其它功能變數名稱都不能進行POST請求的!
感謝您的閱讀!