簡體   English   中英

ASP Web Pages Razor使用AJAX從數據庫返回數組

[英]ASP Web Pages Razor using AJAX to return array from Database

我正在使用ASP進行課程學習,而我正在使用Razor網頁來完成一個應用程序。 現在,我想從SQL數據庫中檢索信息。

就目前而言,我做了一個像這樣的ajax調用:

$.ajax({
    type: "POST",
    url: "/timetabler/Includes/ajaxModulesByUserId",
    data: { id: UserId  },
    success: function (data) {
        alert(data);
        if (data == "ERROR") {
            alert("We are unable to store the theme you have selected, therefore the change will not be permanent.");
        }
    }
});

這非常簡單地調用ajaxModulesByUserId.cshtml傳遞類似1的用戶ID。現在這個文件非常好地調用。

現在我在CSHTML中嘗試做的是獲取請求的ID,然后使用我的C#函數:

public IEnumerable<dynamic> getAllQuery(string query)
    {
        return _db.Query(query);
    }

執行我的查詢。

現在我用我的Razor代碼調用它:

string input = "";
    input = Request["id"];
    var arr = new List<string>();
    if (!string.IsNullOrEmpty(input))
    {
        // Add new sheet to database
        using (var repo = new initDatabase("SQLServerConnectionString"))
        {
            foreach (var row in repo.getAllQuery("SELECT * FROM Module WHERE userID = " + input))
            {
                arr.Add(""+row.moduleCode+","+row.moduleTitle+"");
            }
            @session.Serialize(arr);
        }
    }

所以我從數據庫中返回行並將它們放入一個數組,現在問題是,將這些值傳遞給javascript。

我正在使用一個技巧,我從這里讀取Stackoverflow ,通過使用這樣的函數:

public static string Serialize(object o)
    {            
        JavaScriptSerializer js = new JavaScriptSerializer();
        return js.Serialize(o);
    }

這實際上讓我看到了Javascript中的值,但是當我最終得到這樣的值時,我會陷入困境:

示例輸出

我怎樣才能收到干凈的陣列? 甚至可能甚至返回數據庫中的所有行,因為我不得不在一個數組字段中傳遞代碼和標題的混亂方式,但用逗號分隔。

如果你能幫我把輸出正確的話,真的很感激。

謝謝

Web Pages框架包含一個Json助手 ,它可以獲取您的數據並將其作為JSON返回。

if (!Request["id"].IsEmpty())
{
    using (var repo = new initDatabase("SQLServerConnectionString"))
    {
        var data =  repo.getAllQuery("SELECT * FROM Module WHERE userID = @0", Request["id"])
        Json.Write(data, Response.Output);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM