本文目錄一覽:
- 1、關於ajax和json的問題
- 2、ajax與json數據獲取方法,搞了好久沒搞出來
- 3、如何使用ajax將json傳入後台數據
- 4、json 和ajax的區別
- 5、json和jsonp的區別,ajax和jsonp的區別
關於ajax和json的問題
朋友你這個問題去csdn豈不是更好,嘿嘿這裡給的財富值不值一提呀
ajax與json數據獲取方法,搞了好久沒搞出來
你好,我看了你的代碼,你前端使用json格式接收數據,但是你的服務器端輸出的格式好像不是json格式啊,我是做php的,我做交互數據,都要將數據格式化,轉化成json格式再輸送到前端的。
如何使用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” “”
html xmlns=””
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” “”
html xmlns=””
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 + “‘}”;
}
}
}
所得的效果為:
第一個和第二個按鈕點擊後效果為:
第三個按鈕點擊後效果為:
所以我的初步結論為:後台的重構函數是不成功的,如果有的重構參數的話,只會執行帶參數的,而不會執行那個不帶參數的。現在還不是太明白為什麼會這樣,所以希望明白原理的分享一下自己的觀點。當然這只是個人觀點,如若有誤,望請指正。
json 和ajax的區別
JSON來自於javascript
但是應用上面遠遠不止是javascript的json
它相當於xml,是一種比較流行的標準格式,是數據的載體
javascript json 是用於javascript程序的,它可以支持對象引用以及函數
ajax json只是最簡單的字符串和數字,它不可能完全支持javascript裡面的數據類型,
json和jsonp的區別,ajax和jsonp的區別
json和jsonp雖然只有一個字母的區別,但是它們之間扯不上關係。
json是一種輕量級的數據交換格式。
jsonp是一種跨域數據交互協議。
json的優點:(1)基於純文本傳遞極其簡單,(2)輕量級數據格式適合互聯網傳遞,(3)容易編寫和解析。
ajax和jsonp的區別:
相同點:都是請求一個url
不同點:ajax的核心是通過xmlHttpRequest獲取內容
jsonp的核心則是動態添加script標籤來調用服務器 提供的js腳本。
原創文章,作者:HSYY,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/140199.html