问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

如何使用ajax将json传入后台数据2

提问网友 发布时间:2023-10-20 06:06
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
2个回答
热心网友 回答时间:2024-05-16 23:54
首先采用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 + "'}";
}
}
}

所得的效果为:

第一个和第二个按钮点击后效果为:

第三个按钮点击后效果为:

所以我的初步结论为:后台的重构函数是不成功的,如果有的重构参数的话,只会执行带参数的,而不会执行那个不带参数的。现在还不是太明白为什么会这样,所以希望明白原理的分享一下自己的观点。当然这只是个人观点,如若有误,望请指正。
热心网友 回答时间:2024-05-16 23:55
//基础的ajax配置信息
$.ajax({
       url: "deleteOne.action",    //请求的url地址
       dataType: "json",   //返回格式为json
       async: true, //请求是否异步,默认为异步,这也是ajax重要特性
       data: { "id": id },    //参数值
       type: "get",   //请求方式
       beforeSend: function() {
           //请求前的处理
       },
       success: function(data) {
           //请求成功时处理
           console.info(data);
           if(data==true||data=="true"){
            ; 
            getList();           
           }          
       },
       complete: function() {
           //请求完成的处理
       },
       error: function() {
           //请求出错处理
       }
    });

json格式其实就是字符串而已,后台是把这个字符串当作json格式解析

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

...我新买的视频为什么在QQ聊天打开是一片绿色,我直接在电脑上又能... 我设置过一次了,还能改第二次吗?怎么改670 我的视频可以拍照,为什么我和别人视频的时候画面是绿色的! CPU为凌动N270 的本子可以换成P4或其他的吗11 献血奖牌的问题9 歌词中带有who i am 的一首歌1 宝宝卤门撞凹下去一大块怎么办? 怎么通过qq号查 通过qq号查方法介绍 谁能给我处理一下这个图片?要求颜色一致,正面 外地车进京证过期走五环出京会不会被罚款7 进京证过期了开车出京办证拍么?7 椰子油和橄榄油哪个好?椰子油多少钱一瓶吗?1 进京证到期了么,车还能停在北京么,要出京的时候还能办进京证么...47 我左手无名指骨折穿的钢钉,现在钢钉已取出,手指恢复的也很好,厂里买... ...学校把我们放在宿舍的所有东西全部搬回家。想大家帮忙想个办法怎么把... 求一首姓名藏头诗。姓名:梁禹淇 谢谢了8 求一首姓名藏头诗6 职教发展破解中国发展的教育密码,你如何理解这句话? 在建筑工地受伤了,左手大拇指骨折了,是按《建筑意外伤害保险》赔偿还是... 我初中毕业可以去工地学放线看图纸吗,我爸也是工地项目经理但是...1 ajax访问后台,得到一个对象,我怎么以json格式返回到前... 我的电脑QQ视频变成绿色了,有时候是视频是好的,有时候就变成绿色... 可以修改吗?如何修改?746 如何看发动机排量知道加多少升机油?1 中国梦家之蓝20原浆价格 拉卜楞寺到郎木寺有多远?开车需要多长时间?15 从西宁怎么去拉卜楞寺呢?22 水浒传120回读后感10 想知道:甘南藏族自治州 从拉卜楞寺到郎木寺怎么坐公交?1 ...可是女朋友把我的爱认为是假惺惺的。还说我不真实。 每次当她生... 如何判断在押人员是否具有选举权 求藏头诗一首。姓名,胡立波。谢谢各位。12 求一首姓名藏头诗,与爱情有关,姓名是李春霞,谢谢!1 这是什么币种?可以换多少人民币? 这是什么币种,能换多少人民币?3 进京证过期后能出京吗8 我在屈臣氏买了一瓶橄榄油,能不能吃呀?14 ...左手大拇指骨折,手术用了微型接骨扳和五个钢钉,到 怎么看身份证绑定了几个 ...被扣了两次满分要考科目一和科三。科三费用是多少,要怎么去预约考试...
Top