Мне нужна помощь с моей веб-службой и вызовом json .. застрял, пытаясь вернуть данные, я сделал это успешно со строками и объектами .. но не с массивом ...ASP.NET Web Service JSON Arrays
My Web Service Содержит:
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetSearchCriteria()
{
var js = new JavaScriptSerializer();
var obj = HttpContext.Current.Session["mysessionname"];
if (obj == null)
{
var result = new Criteria[]
{
new Criteria() { Key = Guid.NewGuid(), Operator = "=", ColumnName = "CheckID", Value = "" }
};
var serial = js.Serialize(result);
return serial;
}
else
{
var serial = js.Serialize((Criteria[])obj);
return serial;
}
}
Критерии является:
[Serializable]
public class Criteria
{
public Guid Key { get; set; }
public string ColumnName { get; set; }
public string Operator { get; set; }
public string Value { get; set; }
}
Моя страница содержит:
<script type="text/javascript">
function RefreshCriteria() {
$.ajax({
type: 'POST',
url: '<%= System.Web.VirtualPathUtility.ToAbsolute("~/Services/WebService.asmx/GetSearchCriteria") %>',
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader("Content-type",
"application/json; charset=utf-8");
},
success: function (data) {
$(data).each(function (i) {
var obj = data[i];
alert(obj);
});
}
});
}
$(document).ready(function() {
RefreshCriteria();
});
</script>
Что я получаю неопределен каждый раз .. пытался делать
$(data).each(function (i) {
var obj = data[i];
alert(obj);
});
$(data).each(function (i, obj) {
alert(obj);
});
$(data).each(function (i) {
alert(this);
});
Нет работал до сих пор ..
Когда я отлаживаю .. последовательная переменная, возвращаемая из веб-службы, показывает «[{\" Key \ ": \" 07bc31be-be37-4fa8-a144-16e0626c1500 \ ", \" ColumnName \ ": \" CheckID \ ", \" Operator \ ": \" = \ ", \" Value \ ": \" \ "}]" – jaekie
ahh .. просто получил его .. должен был сделать успех: function (data) { var obj = jQuery.parseJSON (data.d); $ (obj) .each (функция (i, item) { alert (item.Key); }); } – jaekie
Это потому, что результат, который вы возвращаете, является строкой, поэтому строка json экранирована, поэтому это буквальная строка. попробуйте вернуть массив критериев с вашего веб-сервера (нет необходимости в json reference). Это должно заставить данные аргументировать в jQuery массив объектов json. –