1. 程式人生 > >js使用ajax傳值給後臺,後臺返回字串處理

js使用ajax傳值給後臺,後臺返回字串處理

之前使用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" />
js
<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);

此一時彼一時也,這個問題找了好久才發現。。。