首先,如果这是一个菜鸟问题,我很抱歉,这不是我的区域。
我有一个WebMethod,它返回 String (string table =“”)。但是Ajax返回功能
总是看到JSON对象看起来像{"d":{...}}
。我的问题是为什么
我得到了一个JSON,即使我的Ajax期待“文本”?
的WebMethod:
[WebMethod()]
public static string TestAjax(string val)
{
string sSql = ConfigurationManager.AppSettings["GetMiToSend"];
sSql = sSql.Replace("$Company$", val);
string table = "";
try
{
DbCommand command = m_connection.CreateCommand();
command.CommandText = sSql;
command.CommandType = CommandType.Text;
DbDataReader oDataReader = command.ExecuteReader();
int count = 0;
if (oDataReader != null)
{
count = oDataReader.FieldCount;
}
table = "<table>";
while (oDataReader.Read())
{
table += "<tr>";
for (int i = 0; i < count; i++)
{
table += "<td>" + oDataReader.GetValue(i) + "</td>";
}
table += "</tr>";
}
table += "</table>";
}
catch (Exception ex)
{
Console.Out.WriteLine(ex.Message);
}
return table;
}
我的Ajax功能:
$.ajax({
type: "POST",
url: '<%= ResolveUrl("~/Default.aspx/TestAjax") %>',
data: JSON.stringify(toSend),
contentType: "application/json; charset=utf-8",
dataType: "text",
success: function (data) {
alert(data);
$('div#container div#content').html(data.d).show(1000);
$('div#container div#showContent').hide();
$('div#container div#content').addClass('rwd-table');
},
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
答案 0 :(得分:1)
我很确定你无法从string
返回WebMethod
。我没有成功地尝试确认我的断言。因此,请更改代码以返回json
而不是string
。
MS Developer Network: How to: Use the WebMethod Attribute:
将WebMethod属性附加到Public方法表示您希望将该方法作为XML Web服务的一部分公开。
在json
:
WebMehod
List<object> jsonObject = new List<object>();
jsonObject.Add(new
{
htmlTable = table
});
return (new JavaScriptSerializer()).Serialize(jsonObject);
更改您的ajax
以返回json
:
dataType: "json"
然后访问你的json对象和你的html表:
var dataParsed = $.parseJSON(data.d);
var htmlTable = dataParsed[0].htmlTable;
// Do your actions with your htmlTable. Append to an element or other action.