看板 C_Sharp 關於我們 聯絡資訊
各位先進們好 小弟最近在嘗試用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://www.ptt.cc/bbs/C_Sharp/M.1488386168.A.B09.html
J002: 不考慮把webservice的部分改成用web API? 03/02 00:37
eatPLAYlove: 因為剛接觸.NET不久,本來只會寫aspx及cs,最近想試 03/02 00:44
eatPLAYlove: 試用ajax來達到畫面不閃的結果而已,WEBAPI及MVC感 03/02 00:46
eatPLAYlove: 覺還是太難 03/02 00:46
auhgnim: var person = {age: "10",name: "小傑",id: "TT-541"}; 03/02 01:06
auhgnim: data: "req:'" + JSON.stringify(person) + "'", 03/02 01:06
auhgnim: 試試看把person和data改成上述格式 03/02 01:06
eatPLAYlove: 還是不行耶 錯誤訊息仍是跟上述一樣 03/02 07:18
Laluth: 不考慮使用ashx來做嗎? 03/02 09:51
brian80122: client跟server的domain是一樣的嗎? 03/02 09:59
auhgnim: 阿...data的值忘記用大括號包起來了 03/02 11:28
auhgnim: 或是用你原本的寫法也可以,但是webmethod的req型態要改 03/02 11:30
auhgnim: 成object,不然會對應不到 03/02 11:30
Litfal: 你req要傳字串,但你傳的是一個json object阿 03/02 13:15
eatPLAYlove: 總算成功了 謝謝各位先進提供的建議 03/02 19:42
eatPLAYlove: 傳進來一樣是用string接 改成object後面會無法解析 03/02 19:43
eatPLAYlove: Member mm1 = JsonConvert.DeserializeObject<Member 03/02 19:43
eatPLAYlove: >(req); 03/02 19:43
eatPLAYlove: Member mm2 = JavaScriptSerializer.Deserialize<Mem 03/02 19:43
eatPLAYlove: ber>(req); 03/02 19:43
eatPLAYlove: 這兩種方式都可以成功解析 並且讀取裡面的值 03/02 19:44