Я хотел бы преобразовать результат, который я получаю из вызова ajax в массив JavaScript. Как это сделать без использования jQuery?parse JSON без jQuery
Или это будет нормально, просто можно зацикливать массив json без преобразования в массив JavaScript.
На данный момент мне просто нужно оповестить результаты о том, что я получаю от службы ASMX. Использование jQuery не является вариантом.
данных из запроса:
string xmlns="http://tempuri.org/"
[{"Action":"Test1","Target":"#cTarget","Payload":"Hello"},{"Action":"Test2","Target":"#cTarget","Payload":"World"}]
string
[
{
"Action":"Test1",
"Target":"#cTarget",
"Payload":"Hello"
},
{
"Action":"Test2",
"Target":"#cTarget",
"Payload":"World"
}
]
JavaScript кодекса
var httpRequest;
function makeRequest(url, input) {
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!httpRequest) {
alert('Giving up :(Cannot create an XMLHTTP instance');
return false;
}
httpRequest.onreadystatechange = function(){
if (httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
var results = httpRequest.responseText;
var asJavaScriptArray = JSON.parse(results);
}
}
//}
};
httpRequest.open('POST', url);
httpRequest.setRequestHeader('Content-Type', 'application/json');
httpRequest.send(input);
}
var endpointAddress = "Core/RecipeDemo.asmx";
var url = endpointAddress + "/Base";
makeRequest(url, "{}");`
C# Код
[System.Web.Script.Services.ScriptService]
public class RecipeDemo : System.Web.Services.WebService
{
[WebMethod]
public string Base()
{
List<Recipe> listOfRecipe = new List<Recipe>();
JavaScriptSerializer jss = new JavaScriptSerializer();
listOfRecipe.Add(new Recipe {Action = "Test1", Payload = "Hello", Target = "#cTarget"});
listOfRecipe.Add(new Recipe {Action = "Test2", Payload = "World", Target = "#cTarget"});
return jss.Serialize(listOfRecipe);
}
}
Затем просто используйте встроенную функцию JSON.parse (TheDataFromRequest) – frenchie
Обратите внимание, что собственные функции JSON являются родными только для IE8 + и настоящих браузеров - если вы поддерживаете IE7, вам понадобится библиотека, например [json2.js] (https://github.com/douglascrockford/JSON-js). –