js使用ajax傳值給後臺,後臺返回字串處理
阿新 • • 發佈:2018-12-31
之前使用js獲取後臺生成的JSON字串,然後給select填充值,這次需要重新獲取一次。
這裡的目標是,在一個input輸入框裡,輸入一個使用者名稱,判斷是否為空,是否不存在,如果存在返回幾個欄位給前臺,前臺再繫結到其他input上
直接壘程式碼
HTML頁面
<input type="text" id="iusername" runat="server" onblur="tbox_click()"/> <input id="inadd" runat="server" type="text" /> <input id="intel" runat="server" type="text" />
<script> function tbox_click() { var cc = document.getElementById("iusername").value; var jsonob = {tbname:cc}; $.ajax({ type: "Post", url: "tc.aspx/Tbclick", contentType: "application/json; charset=utf-8", dataType: "text", data: JSON.stringify(jsonob), success: function (data) { var a = eval("(" + data + ")"); var al = a.d; if (al == "namenull") { alert("The user name does not exist. Please re-enter it(該使用者名稱不存在,請重新輸入)"); return; } if (al == "null") { alert("Please input OBTUsername(請輸入使用者名稱)"); return; } //alert(a.d); var myd = new Array(); myd = a.d.split("|"); $("#intel").val(myd[0]); $("#inadd").val(myd[1]); }, error: function (e) { alert(e.message); } }); } </script>
後臺
[WebMethod] public static string Tbclick(string tbname) { if (tbname.Trim() == "") { return "null"; } var user = new User(tbname.Trim());//這個是根據tbname從資料庫中獲取資訊的方法,可以自行填寫 if (user.userName == null) { return "namenull"; } string jsonText = user.mobile+"|"+user.address; return jsonText; }
這裡重點說一下和之前的那個的區別,之前的有個函式,返回值是已經處理成JSON格式的字串,這裡的返回值則不是,所以在js裡的處理不一樣,原來的方式是
var aa = eval("(" + data.d + ")");
alert(aa);
這裡則是
var a = eval("(" + data + ")");
alert(a.d);
此一時彼一時也,這個問題找了好久才發現。。。