Ich bin Anfänger in asp.net MVC, und will einfach json von der Steuerung zu Ajax Variable zu holen, zu diesem Zweck in Sicht Seite diese Ajax-Funktion schreiben:
Warum kann ich keine Daten vom Controller aus der Ajax-Funktion abrufen?
<script>
var OutPut;
OutPut = "behzad";
function CallService() {
$.ajax({
url: '@Url.Action("callService", "myPassword")',
type: 'GET',
dataType: 'json',
cache: false,
data: { 'id': 2 },
success: function (color) {
OutPut= color;
},
error: function() {
alert('Error occured');
}
});
alert("I think is ok!"+":"+OutPut);
}
</script>
und dieser Controller:
[HttpGet]
public JsonResult callService(int id)
{
string JSON = "behzad";
return Json(JSON,JsonRequestBehavior.AllowGet);
}
dass ajax-Funktionsaufruf mit diesem hTML-Code in Ansicht Seite:
<button type="button" class="btn btn-success" onclick="CallService()">Success</button>
aber diese Linie in Ajax-Funktion:
alert("I think is ok!"+":"+OutPut);
Ausgang ist nicht definiert, was geschehen ist Controller return null oder warum ich nicht definiert Benachrichtigung erhalten, dank?.
Ajax ist async und Ihre 'alert (..)' wird aufgerufen werden, bevor Sie Ihre Ajax-Aufruf eine zurück Wert. In dem Code, den Sie gezeigt haben, wird die Ausgabe "behzad" (nicht undefiniert) sein, weil Sie sie global deklariert haben. –