我正在尝试将json结果转换为xml类型。但是,它似乎不起作用。无法找出问题所在。请帮忙。
代码是:
<script src="../Jquery Autocomplete/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="../Jquery Autocomplete/jquery.json-2.2.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function()
{
$(".openModalLink").click(function()
{
var start=$(this).parent().parent().find(".start").val();
var end =$(this).parent().find(".end").val();
$.ajax(
{
type: "POST",
url: "frmCollegeExamScheduleMst.aspx/ServerSideMethod",
data: "{'paraml': '" + start + "','param2': '" + end + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
cache: false,
success:function(result)
{
var xmlDoc = $.parseXML(result);
var xml = $(xmlDoc);
var customers = xml.find("Table");
var data = new Array();
var i =0;
$.each(customers, function ()
{
//do something
});
},
error: function(err) {
alert('Error:' + err.responseText + ' Status: ' + err.status);
}
});
});
});
答案 0 :(得分:0)
当您指定dataType:“json”时,响应将转换为JSON对象,并且不会保留为字符串。
尝试删除参数。
答案 1 :(得分:0)
如果您的AJAX请求的响应是xml
,那么您应该相应地进行设置。
$.ajax({
data: {paraml: start, param2: end},
dataType: "xml",
success:function(result) {
var $xml = $(result);
}
});
contentType
无需data
或连接。
答案 2 :(得分:0)
试试这样:
success: function(result) {
var xmlDoc = $.parseXML(result.d);
...
}
注意result.d
。我想你的ASP.NET PageMethod看起来像这样:
[WebMethod]
public static string ServerSideMethod(string param1, string param2)
{
DataSet ds = ...
return ds.GetXml();
}
此字符串是JSON序列化的。为了在客户端上检索它,ASP.NET基础结构添加了d
参数:
{"d":"some xml here"}
您应该在代码中彻底改变的另一件事是替换:
data: "{'paraml': '" + start + "','param2': '" + end + "'}"
使用:
data: JSON.stringify({ param1: start, param2: end })
确保您的请求参数正确进行JSON编码。想想例如start = 'foo\'bar'
会发生什么。你最终会得到:
data: {param1: 'foo'bar', param2: 'baz'}
你可以看到它完全打破你的JSON。