【发布时间】:2014-11-12 08:16:33
【问题描述】:
我有一个 MVC 5 网页,我需要使用 Ajax 从我的视图中调用我的控制器页面上的一个函数。我的问题是,即使对函数的 Ajax 调用有效(函数被调用,并返回我期望的数据),我无法在 Ajax.Success 中获取返回值,但是当我调用失败时,我可以在“错误”中得到返回值。
这是我在视图中的 Ajax 调用:
function FindFreeCards() {
$.ajax({
url: '@Url.Action("FindFreeCards", "AdminCards")',
contentType: "application/json; charset=utf-8",
type: 'POST',
success: function (data) {
alert('SUCCESS');
var FreeCards;
FreeCards = data.d;
alert(FreeCards);
$('#lblFreeCards').html(FreeCards);
$('#modalSelectFreeCard').modal();
},
error: function (request, status, error) {
alert('ERROR');
alert(request.responseText);
alert(status.toString());
alert(error.toString());
}
});
};
这是我在控制器中的功能:
public string FindFreeCards()
{
string FreeCards = "";
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["gbizz"].ConnectionString))
{
con.Open();
SqlCommand sqlCom;
SqlDataReader sqlReader;
System.Data.SqlClient.SqlConnection Con = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["gbizz"].ConnectionString);
Con.Open();
sqlCom = new SqlCommand("LicensePlateFindFreeCard", con);
sqlCom.CommandType = CommandType.StoredProcedure;
sqlCom.Parameters.Add("@CustomerId", SqlDbType.Int).Value = 12;
sqlReader = sqlCom.ExecuteReader();
if (sqlReader.HasRows)
{
while (sqlReader.Read())
{
FreeCards = FreeCards + sqlReader["CardNo"].ToString() + ", ";
}
}
FreeCards = FreeCards.Trim().TrimEnd(',');
if (FreeCards.Contains(','))
{
int LastComma = FreeCards.LastIndexOf(',');
FreeCards = FreeCards.Remove(LastComma, 1);
FreeCards = FreeCards.Insert(LastComma, " og");
}
sqlReader.Close();
sqlReader.Dispose();
sqlCom.Dispose();
con.Close();
con.Dispose();
}
return FreeCards;
}
控制器函数不带任何参数,这就是为什么我在 Ajax 调用中省略了“data:”和“dataType:”参数。
当我调用该函数时,Success 中的第一个 Alert 由单词“SUCCESS”触发,但第二个 alert(我要显示返回值的位置)显示“未定义”。
如果我在 Ajax 调用中添加参数 "data: "{}"",调用会失败,我会得到 alert('ERROR') 显示,然后是 alert(request.responseText),而这个警报实际上包含我希望在函数工作时获得的值。
有什么建议可以在 Ajax 调用成功时获取返回值吗?
【问题讨论】:
-
您返回一个字符串,那么
FreeCards = data.d;是什么?应该只是FreeCards = data;
标签: javascript jquery ajax asp.net-mvc