Zum Inhalt springen

C# WebApi - GUID und jQuery


McSaesch

Empfohlene Beiträge

Hallo,

ich steh gerade ein wenig auf'm Schlauch...

Das Script innerhalb der Seite:


<script type="text/javascript" src="../../Scripts/jquery-1.7.2.min.js"></script>

<script type="text/javascript">

    $(document).ready(function(){

        getAllProjects(function (projects) {         

            var resultStr = "";

            var guidString = "";

            $.each(projects, function (index, project) {


                resultStr += '<li>ProjektId: ' + project.Id;

                resultStr += ' Projektname: ' + project.Name + '<br />';

                resultStr += '<input type="button" value="Löschen" onclick="deleteProject(' + String(project.Id) + ')"/>';         

            });

            $('#resultList').html(resultStr);

        });

    }); 


    function getAllProjects(callback) {

        $.ajax({

            url: "/api/Project",

            data: {},

            type: "GET",                    

            contentType: "application/json;charset=utf-8",

            statusCode: {

                200: function (projects) {

                    callback(projects);

                },

                404: function () {

                    alert("Not found");

                }

            }

        }).then(function(projects){

            callback(projects);

            });

    }


    function deleteProject(projectId) {


//        var guidString = String(projectId);

        var apiUrl = "api/project/{0}";

        apiUrl = apiUrl.replace("{0}", projectId);


        $.ajax({

            url: apiUrl,

            data: { },

            type: "DELETE",

            cache: false,

            contentType: "application/json;charset=utf-8",

            statusCode: {

                200: function (data) {},

                404: function (data) {alert("Not found");},

                400: function (data) {alert("Bad request");}

            }});

    }    

</script>

Die Seite lässt sich aufrufen, die Daten werden geladen, alles so wie es sein soll.

Nur beim Löschen-Aufruf bekomme ich folgende Fehlermeldung im FireBug angezeigt:

SyntaxError: identifier starts immediately after numeric literal

Wie kann ich die GUID Id als Parameter übergeben ohne dass sie (anscheinend) geparst wird?! Einfach nur als String funktioniert nicht....

Danke + Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hab grade noch mal ein wenig rumprobiert, mit einem äquivalenten Codeschnippsel.

Funktioniert nicht:


var projectIds = ['a8a3ee46-0ca0-4e0a-ac8e-81e3343901b', 'b8a3ee46-0ca0-4e0a-ac8e-81e3343901b', 'c8a3ee46-0ca0-4e0a-ac8e-81e3343901b'];

for (var projectId in projectIds)
document.write('<input type="button" value="Löschen" onclick="deleteProject(' + projectIds[projectId] + ')"/>');

function deleteProject(projectId){
alert(projectId);
}
[/PHP]

Funktioniert:

[PHP]
var projectIds = ['a8a3ee46-0ca0-4e0a-ac8e-81e3343901b', 'b8a3ee46-0ca0-4e0a-ac8e-81e3343901b', 'c8a3ee46-0ca0-4e0a-ac8e-81e3343901b'];

for (var projectId in projectIds)
document.write('<input type="button" value="Löschen" onclick="deleteProject(\'' + projectIds[projectId] + '\')"/>');

function deleteProject(projectId){
alert(projectId);
}

Dardurch, das die ProjektId einfach noch mal in '' gesetzt wird, wird explizit festgelegt, das es sich um einen String handelt. Denke das ganze sollte bei deinem Fall auch funktionieren :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dardurch, das die ProjektId einfach noch mal in '' gesetzt wird, wird explizit festgelegt, das es sich um einen String handelt. Denke das ganze sollte bei deinem Fall auch funktionieren :)

Mehr oder weniger richtig. Deine Funktion bekommt als Parameter einen String übergeben. Wenn du das HTML von Hand schreiben würdest, dann sähe es auch in etwa so aus: deleteProject('guid') .

In deiner Schleife baust du dir HTML-Code zusammen - damit muss das Ergebnis äquivalent sein.

Du könntest genausgut folgendes nutzen:


for (var projectId in projectIds)
document.write('<input type="button" value="Löschen" onclick="deleteProject(projectIds[' + projectId + '])"/>');
[/PHP]

In diesem Fall verkettet man weiterhin Strings, aber im generierten HTML verwendet man jetzt die Referenz auf das Array.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mir ging es in meinem Beispiel nicht um die Schleife an sich, sondern darum das Problem von McSaesch zu lösen.

EDIT: Um es noch mal zu verdeutlichen:

Diese Zeile:


resultStr += '<input type="button" value="Löschen" onclick="deleteProject(' + String(project.Id) + ')"/>';
[/PHP]

folgendermaßen ändern:

[PHP]
resultStr += '<input type="button" value="Löschen" onclick="deleteProject(\'' + String(project.Id) + '\')"/>';

und das Problem sollte behoben sein.

Beste Grüße

Bearbeitet von LordHexa
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Wochen später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...