栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

jQuery Ajax将json发布到Web服务

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jQuery Ajax将json发布到Web服务

您提到使用json2.js来对数据进行字符串化,但是POSTed数据似乎是URLEnpred
JSON您可能已经看过了,但是这篇关于无效JSON原语的文章介绍了为什么对JSON进行URLEnpred。

我建议 不要 将原始的,手动序列化的JSON字符串传递到您的method中。ASP.NET将自动对请求的POST数据进行JSON反序列化,因此,如果要手动序列化JSON字符串并将其发送到ASP.NET,则实际上最终将不得不对JSON序列化的JSON序列化。

我会根据以下建议提出更多建议:

var markers = [{ "position": "128.3657142857143", "markerPosition": "7" },    { "position": "235.1944023323615", "markerPosition": "19" },    { "position": "42.5978231292517", "markerPosition": "-3" }];$.ajax({    type: "POST",    url: "/webservices/PodcastService.asmx/CreateMarkers",    // The key needs to match your method's input parameter (case-sensitive).    data: JSON.stringify({ Markers: markers }),    contentType: "application/json; charset=utf-8",    dataType: "json",    success: function(data){alert(data);},    failure: function(errMsg) {        alert(errMsg);    }});

避免无效JSON原语问题的关键是向jQuery传递

data
参数的JSON字符串(而不是Javascript对象),以使jQuery不会尝试对数据进行URL编码。

在服务器端,将方法的输入参数与要传递的数据的形状匹配:

public class Marker{  public decimal position { get; set; }  public int markerPosition { get; set; }}[WebMethod]public string CreateMarkers(List<Marker> Markers){  return "Received " + Markers.Count + " markers.";}

Marker[] Markers
如果愿意,还可以接受一个数组,例如。ASMX
scriptServices使用的反序列化器(JavascriptSerializer)非常灵活,它将尽其所能将输入数据转换为您指定的服务器端类型。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436860.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号