我正在使用存儲過程來查詢基於某些用戶輸入的內部數據庫。MVC4解析json從Ajax請求返回
我已經知道了,我的ajax請求會收到一個JSON字符串,我的控制器使用StringBuilder構建。響應字符串格式完全一樣如下:
{ "Head":[ { "FIRST_NAME":"JOHN","LAST_NAME":"SMITH","STORE":"1","COMPANY":"1"} ]}
我希望將這些值插入到通過jQuery一些HTML輸入標籤,但我有一個很難找到一種方法來正確地分析這些。
$('#number').blur(function() {
$.ajax({
url: "../Home/SearchUser",
type: "get",
datatype: 'json',
data: { reqMem: $("#number").val() },
success: function (response) {
// This is where I need to parse and shove some values
$("#name").val(response.name)
$("#store").val(response.name)
// etc..
},
error: function (textStatus) {
alert("error: " + textStatus);
},
});
});
以下是我控制器方法。任何建議將不勝感激。我對此很陌生。
[HttpGet]
public string SearchUser(string reqMem)
{
SqlConnection con = new SqlConnection("I manually have my string here")
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand();
DataTable dt = new DataTable();
cmd = new SqlCommand("dbo.spx_findReqMember", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@reqMemName", reqMem);
da.SelectCommand = cmd;
da.Fill(dt);
StringBuilder JsonString = new StringBuilder();
//Exception Handling
if (dt != null && dt.Rows.Count > 0)
{
JsonString.Append("{ ");
JsonString.Append("\"Head\":[ ");
for (int i = 0; i < dt.Rows.Count; i++)
{
JsonString.Append("{ ");
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j < dt.Columns.Count - 1)
{
JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() +
"\":" + "\"" +
dt.Rows[i][j].ToString().TrimEnd() + "\",");
}
else if (j == dt.Columns.Count - 1)
{
JsonString.Append("\"" +
dt.Columns[j].ColumnName.ToString() + "\":" +
"\"" + dt.Rows[i][j].ToString().TrimEnd() + "\"");
}
}
/*end Of String*/
if (i == dt.Rows.Count - 1)
{ JsonString.Append("} "); }
else
{ JsonString.Append("}, "); } }
JsonString.Append("]}");
return JsonString.ToString(); }
else
{ return reqMem; } }
作爲一般的提示,我會強烈建議對JavaScript的串行器類閱讀起來,http://msdn.microsoft.com/ EN-US /庫/ system.web.script.serialization.javascriptserializer.aspx。這將允許你將你的數據存儲到一個對象中,然後自動爲你編寫它,處理所有的轉義本身。 –
我會看看那個。感謝您的意見。 –