pass json-Daten vom controller zum view
Teilansicht :
var dataa;
$.ajax({
url: ServerUrl + '/Dashboard/GetData',
type: 'POST',
cache: false,
dataType: 'text',
async: true,
error: function (xhr) {
//alert('Error: ' + xhr.statusText);
},
success: function (result) {
debugger;
dataa = result;
var chart = c3.generate({
data: {
type: 'bar',
json: [
dataa
],
keys: {
x: 'indicator',
value: ['total']
}
},
axis: {
x: {
type: 'category'
}
},
bar: {
width: {
ratio: 0.5
}
}
});
}
});
Controller Json-code
public string GetData()
{
return "{ 'indicator': 'X', 'total': 100 },{ 'indicator': 'Y', 'total': 200 },{ 'indicator': 'Z', 'total': 300 }";
}
Wenn ich den obigen code, es funktioniert nicht, aber wenn ich den pass json-Daten wie in diese JS-Fiddle link, es funktioniert. Bin ich vorbei an der JSON-Daten nicht korrekt vom controller.?
Bitte helfen.
- Seine nicht gültig (Ihre Rückgabe eines string, nicht als json) - es müsste
[{indicator: 'X", total: 100}, {...}]
. Sie wäre besser dran, erstellen einer Auflistung von Objekten mit Eigenschaftenindicator
undtotal
und dannreturn Json(myCollection);
so seine Gültigkeit. - ist dies eine gültige Zeichenfolge zurückgeben, " { \"Anzeige\": \"X\", \"total\": \"100\" },{ \"Kennzeichen\": \"Y\", \"total\": \"200\" },{ \"Kennzeichen\": \"Z\", \"total\": \"300\" }";
- Ich habe nur um es zu testen mit dem hardcoded json-Daten vom controller. Bitte helfen Sie mir mit der gleichen
- Sie müssten, um es zu testen. Aber es ist ein string, nicht als json. Verwenden
public JsonResult GetData() return Json(....)
}` zurückkehren gültige json-Daten. Auch Sie ajax-option mussdataType: 'json',
(nicht 'text')
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nicht JSON zurückgeben von der Methode GetData.
Tun, auf diese Weise zu JSON zurückgeben
Machen und ajax-Aufruf wie:
return Json(data, JsonRequestBehavior.AllowGet);
die ajax-option mussdataType: 'json',
und in der Erfolgs-callback, muss esdata: { type: 'bar', json: dataa, ...