A. aJax方法利用jsonp如何跨域把json包發給遠程伺服器
加上 async:false,
$.ajax({
async:false,
url:"ajax_jsq.php",
data:dta,
success:function(re){
}
B. 如何向伺服器發送json數據
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
Ajax中可以使用xml作為參數發送給伺服器,除了XML還可以使用JSON(http://www.json.org/json-zh.html)
XML的一個替代方法是JSON,JSON是一種文本格式,它獨立於具體語言,JSON建立在以下兩種數據結構基礎上:
名/值對集合,在不同的語言中,被實現為一個對象、記錄、結構或字典
值的有序表,在大部分語言中,實現為數組
JSON可以做為異構系統之間的一種數據互換格式。
JSON對象是名/值對的無序集合({},使用「:」分隔),JSON數組是一個有序的值集合([],使用「,」分隔)
如下就是一個JSON格式的數據:
var employee = {
「firstName」 : John
, 「lastName」 : Do
C. 如何使用ajax將json傳入後台數據
首先,我們來寫一下後台如何生成要傳輸的數據:
這樣,就可以把數據無刷新的寫入到資料庫。
D. 如何使用ajax將json傳入後台數據
首先採用jquery內部封裝好的方法是比較簡單的,我們只需做的就是修改裡面的一些配置:
以下代碼是對$.ajax()的解析:
$.ajax({
type: "POST", //提交方式
contentType: "application/json; charset=utf-8", //內容類型
dataType: "json", //類型
url: "前台地址/後台方法", //提交的頁面,方法名
data: "parameter", //參數,如果沒有,可以為null
success: function (data) { //如果執行成功,那麼執行此方法
alert(data.d); //用data.d來獲取後台傳過來的json語句,或者是單純的語句
},
error: function (err) { //如果執行不成功,那麼執行此方法
alert("err:" + err);
}
});
當然我初次學習的時候,看到這些也是有些茫然的,因為不知道到如何才能將其用到自己的程序裡面,所以就寫了一個小的檢測網頁來測試一下,如果你測試的時候沒有達到你想要的結果,那麼希望你回頭看一下,前台是否寫的有問題,或者是參考一下下文中的注意事項吧。
前台代碼 :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="number3.aspx.cs" Inherits="ajax1.number3" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>測試ajax</title>
<script src="js/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
function testAjax() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "number3.aspx/GetJson",//傳入後台的地址/方法
data: "{'RID':'123'}",//參數,這里是一個json語句
success: function (data) {
var result = data.d;
alert(result);
},
error: function (err) {
alert("err:" + err);
}
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<button >用button測試ajax</button>
<input type="button" value="testAjax" />
</div>
</form>
</body>
</html>
後台代碼:
using System;
using System.Web.Services;
namespace ajax1
{
public partial class number3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string GetJson(string RID)
{
return "{'ID':'" + RID + "'}";
}
}
}
後台代碼中以黃色為背景的就是我們要注意的地方:
1.using System.Web.Services;對應下面的[WebMethod]這個一定要加上的。
2.後台寫的方法一定是公共靜態的即一定是public static開頭的。
3.參數一定是前台的data所傳參數的鍵
前台中要注意的地方:
1.大家應該會注意到,前台我用的是兩個button來測試,但是第一個<button>是不行的,頁面會刷新一下,其實這都是<form
id="form1"
runat="server">這行代碼的問題,<button>標簽會提交本頁面的內容,從而導致非同步刷新失敗。所以建議大家不要用<button>標簽。但是如果不得不用的話,解決辦法還是有的,目前我知道的只有兩個:
①:將<form id="form1"
runat="server">代碼去掉,當然如果本頁面有要提交的內容就會很麻煩了
②:將<button onclick="aaa();return
false;">用button測試ajax</button>代碼改為:<button
onclick="aaa();return false;">用button測試ajax</button>
2。前台的測試結果是:
那麼我們如何來只獲取json後面的值,而不是整個json語句呢,我們可以將json語句對象化,然後根據鍵來取得對應的值:前台的testAjax()的方法改為:
function testAjax() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "number3.aspx/GetJson",
data: "{'RID':'123'}",
success: function (data) {
var result = eval("(" + data.d + ")");//這句話是將json語句對象化
alert(result.ID);
},
error: function (err) {
alert("err:" + err);
}
});
}
此時結果為:
以上就是初步學習json當時遇到的問題所留下的經驗。同時我想驗證一下是否能夠在後台重載方法來實現根據前台的data是否有參數來判斷要執行的方法,所以我將代碼改動了一下:
改動後的前台代碼
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="number3.aspx.cs" Inherits="ajax1.number3" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>測試ajax</title>
<script src="js/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
function testAjax() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "number3.aspx/GetJson",
data: "{'RID':'123'}",
success: function (data) {
var result = eval("(" + data.d + ")");
alert(result.ID);
},
error: function (err) {
alert("err:" + err);
}
});
}
function aaa() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "number3.aspx/GetJson",
success: function (data) {
alert(data.d);
},
error: function (err) {
alert("err:" + err);
}
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<button >用button測試ajax</button>
<input type="button" value="testAjax" />
<input type="button" value="aaa" />
</div>
</form>
</body>
</html>
改動後的後台代碼
using System;
using System.Web.Services;
namespace ajax1
{
public partial class number3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string GetJson()
{
return "hello ajax";
}
[WebMethod]
public static string GetJson(string RID)
{
return "{'ID':'" + RID + "'}";
}
}
}
所得的效果為:
第一個和第二個按鈕點擊後效果為:
第三個按鈕點擊後效果為:
所以我的初步結論為:後台的重構函數是不成功的,如果有的重構參數的話,只會執行帶參數的,而不會執行那個不帶參數的。現在還不是太明白為什麼會這樣,所以希望明白原理的分享一下自己的觀點。當然這只是個人觀點,如若有誤,望請指正。
E. 一分鍾學會什麼是Ajax及Ajax請求的五個步驟
AJAX的意思就是非同步的JavaScript和XML。簡而言之,它是使用XMLHttpRequest對象與伺服器端通信的腳本語言。它可以發送及接收各種格式的信息,包括JSON、XML、HTML和文本文件。AJAX最為吸引人的就是它的「非同步」特性,AJAX可以無需刷新頁面而與伺服器端進行通信。
Ajax請求的五個步驟:
1、建立xmlHttpRequest對象
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
if(xmlHttp.overrideMimeType) {
xmlHttp.overrideMimeType("text/xml");
}
} else if(window.ActiveXobject) {
var activeName = ["MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for(var i = 0; i < activeName.length; i++) {
try {
xmlHttp = new ActiveXobject(activeName[i]);
break;
} catch(e) {}
}
}
if(!xmlHttp) {
alert("創建xmlhttprequest對象失敗");
} else {}
2、設置回調函數
xmlHttp.onreadystatechange= callback;
function callback(){}
3、使用OPEN方法與伺服器建立連接xmlHttp.open("get","ajax?name="+ name,true)
此步注意設置http的請求方式(post/get),如果是POST方式,注意設置請求頭信息xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
4、向伺服器端發送數據
xmlHttp.send(null);如果是POST方式就不為空
5、在回調函數中針對不同的響應狀態進行處理
if(xmlHttp.readyState == 4){ //判斷交互是否成功
if(xmlHttp.status == 200){ //獲取伺服器返回的數據 //獲取純文本數據
var responseText =xmlHttp.responseText;
document.getElementById("info").innerHTML = responseText;
}
}
(5)ajaxjson是如何和伺服器通信的擴展閱讀:
Ajax優缺點
優點:
1、非同步請求,不妨礙用戶瀏覽頁面或者其他操作。
2、局部刷新,無需重新刷新頁面。
3、界面與應用分離。有利於分工合作、減少非技術人員對頁面的修改造成的WEB應用程序錯誤、提高效率、也更加適用於現在的發布系統。
4、基於標准被廣泛支持。
5、前端和後端負載平衡。最大程度的減少冗餘請求和響應對伺服器造成的負擔,提升站點性能。
缺點:
1、back和History,對瀏覽器機制的破壞。
2、安全問題。易受到黑客攻擊。
3、對搜索引擎支持較弱。
4、不能很好支持移動設備。
5、違背URL和資源定位的初衷。
F. ajax是用什麼數據格式跟伺服器交互的
用JSON來傳數據,靠JSONP來跨域
G. 如何使用Ajax非同步請求JSon數據
$.ajax({
url : url,
type : 'post',
dataType : 'json',
data : data
success : function(data){
if(callback){
callback.call(this,data);
}
}
});
這是一個標準的ajax請求,你可以根據自己的實際去修改url,data的數據,伺服器成功返回後success中存儲了對應的後台傳遞過來的json數據,你可以根據自己的情況進行解析
H. ajax中枚舉數組轉換成JSON字元串,服務端如何接收
服務端可以這樣處理:
$data=file_get_contents('php://input');
$arr=json_decode($data,true);
然後$arr[0]就是前端數組中的"a1",$arr[1]就是"a2",依此類推
-----------------------------
後期補充:
我這邊測試是完全沒問題的,附我的測試代碼:
html端:
<div id="showdata"></div>
<script>
var myjson=JSON.stringify(["a1","a2","a3"]);
$.ajax({
url:"test.php", //這是我自己的測試文件名
type:"POST",
data:myjson,
success:function(res){
$("#showdata").html(res);
}
});
</script>
php端(test.php):
<?php
$data=file_get_contents('php://input');
$arr=json_decode($data,true);
echo $arr[0];
?>
I. ajax 中以json傳給伺服器端,怎麼傳,以什麼形式傳,傳到伺服器端後怎麼接收,要解析嗎,要的話怎麼做
ajax多數都是POST 少數GET 傳給伺服器, ajax的url就是伺服器端程序 比如 a.asp 或者 p.php
, request.("") 或者 $_request都可以使用 ,回傳json形式{"",""}
J. ajax傳遞json,然後伺服器接受json的代碼編寫
1.ajax發送請求(建議使用jQuery):
$.ajax({
method:post;
url: "你要發送到後台去的地址",
parameter:你要傳送的數據,
beforeSend:function(){在發送請求之前你要做的事}
afterSend:function(){在發送請求後你想做的事}
success:function(){alert('成功了!')}
});
2.後台處理JSON數據:
1)最基本的原理性解決辦法:JSON不過是通過request對象傳過來的鍵值對而已,直接獲得request對象,去對應的屬性就行了。
2)net.sf.json.JSONObject這個包你可以學習下,也不是很難。
3.關於返回頁面:
你要控制頁面跳轉么?那你使用AJAX干毛啊?使用AJAX就是為了不刷新頁面而把值傳到後台去的。