我在asp.net上开发了一个web服务,我希望它返回一个json字符串而不是xml文件。我在我的代码中设置了以下内容并在互联网上查看了多个来源,我尝试了但是“错误”一直出现。
dao.asmx
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getLosKPIDataYear()
{
List<Object> sqlObject = new List<Object>();
String connectionString = DAO.GetConnectionString();
string sqlQuery = string.Empty;
var serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
SqlConnection sqlConn = new SqlConnection(connectionString);
try
{
sqlQuery = "select LOSYearYear, LOSYearLOS from LOSYear";
sqlConn.Open();
SqlDataReader reader = null;
SqlCommand sqlCommand = new SqlCommand(sqlQuery, sqlConn);
reader = sqlCommand.ExecuteReader();
while (reader.Read())
{
sqlObject.Add(new { LOSYearYear = reader["LOSYearYear"].ToString(), LOSYearLOS = reader["LOSYearLOS"].ToString() });
} }
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
sqlConn.Close();
var resultData = new { e = sqlObject.ToArray() };
ContentResult result = new ContentResult();
result.Content = serializer.Serialize(resultData);
result.ContentType = "application/json";
String myResult = result.Content;
return myResult;
}
的web.config
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
<system.webServer>
<handlers>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</handlers>
<modules runAllManagedModulesForAllRequests="true"/>
<staticContent>
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>
</system.webServer>
我该怎么做才能解决这个问题?提前谢谢!
答案 0 :(得分:0)
试试这个
var JsonString = ....;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "YourWebServiceName.asmx/yourmethodname",
data: "{'TheData':'" + JsonString + "'}",
dataType: "json",
success: function (msg) {
var data = msg.hasOwnProperty("d") ? msg.d : msg;
OnSucessCallBack(data);
},
error: function (xhr, status, error) {
alert(xhr.statusText);
}
});
function OnSuccessCallData(DataFromServer) {
// your handler for success
}
Webservice代码: -
using System.Web.Services;
using System.Web.Script.Serialization;
[System.Web.Script.Services.ScriptService]
public class YourWebServiceName : System.Web.Services.WebService
{
[WebMethod]
public string yourmethodname(string TheData)
{
JavascriptSerializer YourSerializer = new JavascriptSerializer();
// custom serializer if you need one
YourSerializer.RegisterConverters(new JavascriptConverter [] { new YourCustomConverter() });
//deserialization
TheData.Deserialize(TheData);
//serialization
TheData.Serialize(TheData);
}
}