作者eatPLAYlove (爱玩又爱吃)
看板C_Sharp
标题[问题]WebService与Json的问题\
时间Thu Mar 2 00:36:05 2017
各位先进们好
小弟最近在尝试用ajax与webservice来做互动
但在过程中 只要是碰到要传递json格式的资料
就会一直出现 [object Object] 500 Internal Server Error
在网路上也找了好多方法 但怎麽试还是出现上面的错误
以下是我的写法 还请各位指导那些地方写错需要改进的
webservice部分我用了JSON.NET提供的方法以及内建的JavaScriptSerializer
javascript:
$(document).ready(function () {
$("#bt1").click(function () {Json()});
});
function Json()
{
var person ={req:{age: "10",name: "小杰",id: "TT-541"}};
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify(person),
url: 'ForAJAX.asmx/GetJson',
success: function (data) {
var tmp = JSON.parse(data.d);
$("#content").text(tmp[0].name+"--"+tmp[0].id+"--"+tmp[0].age);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr + "\n" + xhr.status + "\n" + thrownError);
}
});
}
WebService:
using System.Web.Script.Serialization;
using Newtonsoft.Json;
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetJson(string req)
{
var mm = JsonConvert.DeserializeObject<Member>(req);
Member[] mem1 = new Member[]{new Member(){age=mm.age,id=mm.id,name=mm.name}};
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(mem1);
}
public class Member
{
public string name;
public string id;
public string age;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.137.153.198
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1488386168.A.B09.html
1F:推 J002: 不考虑把webservice的部分改成用web API? 03/02 00:37
2F:→ eatPLAYlove: 因为刚接触.NET不久,本来只会写aspx及cs,最近想试 03/02 00:44
3F:→ eatPLAYlove: 试用ajax来达到画面不闪的结果而已,WEBAPI及MVC感 03/02 00:46
4F:→ eatPLAYlove: 觉还是太难 03/02 00:46
5F:推 auhgnim: var person = {age: "10",name: "小杰",id: "TT-541"}; 03/02 01:06
6F:→ auhgnim: data: "req:'" + JSON.stringify(person) + "'", 03/02 01:06
7F:→ auhgnim: 试试看把person和data改成上述格式 03/02 01:06
8F:→ eatPLAYlove: 还是不行耶 错误讯息仍是跟上述一样 03/02 07:18
9F:推 Laluth: 不考虑使用ashx来做吗? 03/02 09:51
10F:→ brian80122: client跟server的domain是一样的吗? 03/02 09:59
11F:推 auhgnim: 阿...data的值忘记用大括号包起来了 03/02 11:28
12F:→ auhgnim: 或是用你原本的写法也可以,但是webmethod的req型态要改 03/02 11:30
13F:→ auhgnim: 成object,不然会对应不到 03/02 11:30
14F:→ Litfal: 你req要传字串,但你传的是一个json object阿 03/02 13:15
15F:→ eatPLAYlove: 总算成功了 谢谢各位先进提供的建议 03/02 19:42
16F:→ eatPLAYlove: 传进来一样是用string接 改成object後面会无法解析 03/02 19:43
17F:→ eatPLAYlove: Member mm1 = JsonConvert.DeserializeObject<Member 03/02 19:43
18F:→ eatPLAYlove: >(req); 03/02 19:43
19F:→ eatPLAYlove: Member mm2 = JavaScriptSerializer.Deserialize<Mem 03/02 19:43
20F:→ eatPLAYlove: ber>(req); 03/02 19:43
21F:→ eatPLAYlove: 这两种方式都可以成功解析 并且读取里面的值 03/02 19:44