tequila slammer
Erfahrenes Mitglied
Hallo Forum,
als Einsteiger in JavaScript habe ich bisher gelernt, das anders als in anderen Sprachen es in JS kein void gibt. Das bedeutet, ich kann mit return jeden beliebigen Wert zurückgeben. Wenn dem so ist verstehe ich folgendes Verhalten der untenstehenden Funktion nicht.
Nach meinem Verständnis, muss die Funktion entweder true oder false zurückgeben. Mein Problem ist nun, dass im IE8 und FF undefine zurück kommt. Eine Ausnahme stellt der FF mit JavaScript-Debugging über Firebug dar. Dann erscheint auch tatsächlich das erwartete Ergebnis.
Ich muss zwei Sachen anmerken. Erstens undefine kommt, weil ich response nicht vorbelegt habe und die Webservice Methode gibt nichts (void) zurück.
Aufgerufen wird die Funktion dann so:
Woher kommt dieses Verhalten - kann das am Rückgabewert des Webservice liegen?
als Einsteiger in JavaScript habe ich bisher gelernt, das anders als in anderen Sprachen es in JS kein void gibt. Das bedeutet, ich kann mit return jeden beliebigen Wert zurückgeben. Wenn dem so ist verstehe ich folgendes Verhalten der untenstehenden Funktion nicht.
Code:
function DeleteItem(basketId, basketItemId) {
var parameters = "{basketId: '" + basketId + "',productBasketId: '" + basketItemId + "'}"
var response;
$.ajax({
type: "POST",
url: "http://localhost/DataService.asmx/DeleteFromBasket",
data: parameters,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
response = true;
},
error: function(msg) {
response = false;
}
});
return response;
}
Nach meinem Verständnis, muss die Funktion entweder true oder false zurückgeben. Mein Problem ist nun, dass im IE8 und FF undefine zurück kommt. Eine Ausnahme stellt der FF mit JavaScript-Debugging über Firebug dar. Dann erscheint auch tatsächlich das erwartete Ergebnis.
Ich muss zwei Sachen anmerken. Erstens undefine kommt, weil ich response nicht vorbelegt habe und die Webservice Methode gibt nichts (void) zurück.
Aufgerufen wird die Funktion dann so:
Code:
$(".deleteItem").click(function() {
var basket = '<%= Session["basket"].ToString() %>';
var itemId = $(this).attr('rel');
var response2 = DeleteItem(basket, itemId);
alert(response2); //debug-ausgabe
if (response2) {
$(this).parent().parent().remove();
}
return false;
});
Woher kommt dieses Verhalten - kann das am Rückgabewert des Webservice liegen?