"missing ; before statement" - Fehler für die getJSON-Aufruf

Kann mir bitte jemand erklären die folgenden. Habe ich durchforstete das Netz nach Altersstufen, die versuchen Hilfe zu finden und ich glaube, ich mache alles richtig, aber noch immer Fehler.

Ich habe Folgendes script auf meiner Seite:

        function GetPageAdvert2(url) {

            $.getJSON('http://url/servicename.asmx/CheckAdvert?callback=?', 
            {
                pagename:   url,
                success:    function(data) { alert(data) }
            });        
        };

Und mein webservice gibt nichts mehr als:

jsonp1301065851157('url/KiN_150x300.jpg');

Das problem ist, dass wenn ich Anrufe, GetPageAdvert2, nichts ist passiert.

Mein WebService (geschrieben in VB.Net) ist:

        <WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, XmlSerializeString:=False, UseHttpGet:=True)> _
Public Sub CheckAdvert(ByVal pagename As String, ByVal callback As String)

    Dim pageUID As Integer = 0
    Dim advertURL As List(Of aU) = New List(Of aU)()

    Dim sss As String

    Using con As New System.Data.SqlClient.SqlConnection(My.Settings.sqlConnection2)

           SQL STUFF IN HERE
           the SELECT statement will return a value and place it in Variable SSS


    End Using

    Context.Response.ContentType = "application/json"
    Context.Response.Write(callback & "('" & sss & "');")
    Context.Response.End()


End Function

Die Antwort, die ich bin immer wieder (in der FF) ist:

PARAMS:
callback    jsonp1300979718942
contentType application/json; charset=utf-8
pagename    default.html
success undefined

RESPONSE:
jsonp1301065851157('url/KiN_150x300.jpg');

Dies ist vor allem, was, glaube ich, korrekt zu sein.

Aber der "Alert(data)" nicht produzieren etwas anderes als "undefined".

  • JSON sollte beginnen und enden mit geschweiften Klammern: {"url":"KiN_150x300.jpg"}
  • das stimmt nicht: in diesem Fall, der server gibt ein Objekt zurück, eingewickelt in ein array.
  • Falsch. Das ist, wenn Sie nur wollen, um zurück zu einem einzigen Objekt. Wenn Sie möchten, geben ein array zurück, Sie beginnen mit surround es mit [].
  • Ok, jetzt müssen Sie Sie zu ersetzen test mit der callback parameter. Wenn Sie definieren eine function test(a) { alert(a); } nun, gibt es Alarm so etwas wie [object Object]?
  • Nein, ich bekomme ein 200 OK (Fehler) in FireBug. Ebenso weiß ich nicht, was der parameter callback wird, sobald Sie eine beliebige Zahl (siehe editierten Beitrag), ich denke, es ist wie ein Unix-Timestamp.
  • Also funktioniert es jetzt oder hast du noch eine Fehlermeldung erhalten? Der parameter callback ist der name einer Funktion, die aufgerufen wird, sobald das Skript injiziert in Ihre Seite ein.
  • Nein, sorry, noch immer ein Fehler (fehlen ; ). Sache ist, die "Erfolg" ich denke, dass wird genannt, dass ist die EINZIGE Warnmeldung, die ich in meinem script und es ist mit der Meldung "undefined".
  • Ah, jetzt ist es klarer (bitte Einrücken von code durch 4 Leerzeichen mit dem code {} - Taste): der server antwortet mit einem XML-Dokument nicht mit einem einfachen JavaScript-Anweisung jsonp1300979718942([{"url":"[removed]/KiN_150x300.jpg"}]). Sehen, wenn Sie den rest Los. Was server-side-Sprache, die Sie benutzen?
  • Ich bin froh, dass es mehr klar, weil es nicht zu mir! haha. OK, gut, ich habe eingerückt, den code durch 4 Leerzeichen, die Antwort, die ich zurück bekommen (von FireBug) liest nun den Wert "<?xml version="1.0" encoding="utf-8"?> <string xmlns="[url,/">jsonp1301039560625( [{"url":"url/KiN_150x300.jpg"}])</string>" doch ich bin noch immer die "missing ;" Fehler. Die server-Seite Sprache ist VB.Net. Ich habe aktualisiert mein original-Beitrag mit dem, was da ist.
  • Nein, das Einrücken gemeint ist, für diese Website, nicht für Ihren code auf dem server. Das problem ist VB.net Verwandte: Sie sollten wohl einfach nur "print" der string jsonp1301039560625([{"url":"url/KiN_150x300.jpg"}]) an den client, sollten Sie nicht die Ausgabe ein XML-Dokument, da der server nicht im moment.
  • Schließlich löste es. Bearbeiten, meinen obigen post zu zeigen, was ich getan habe. Vielen DANK für Ihre Hilfe und Unterstützung, es ist sicherlich eine Erkenntnis, und während ich bin nicht 100% überzeugt, meine Lösung funktioniert für alles, was (vielleicht wird es nicht in ein array?), es ist sicherlich dazu beigetragen, mich zu verstehen. Nochmals meinen aufrichtigen Dank für Ihre Geduld in dieser.
  • nun bewaffnet mit der Tatsache, dass ich zurückkehren werde einen JavaScript-Aufruf, wie ist das nun möglich, den Rückgabewert zu meinem ursprünglichen Aufruf auf dem client? Der "Erfolg" Teil der getJSON scheint nicht, etwas zu tun?
  • Suchen Sie in Ihrer aktuellen code, es scheint, dass Sie ausgeben test(, aber Sie sollten geben Sie den Wert der callback parameter, so etwas wie Context.Response.Write(callback & "(" & js.Serialize(sss) & ")") sollte ausreichen.
  • ok habe das gemacht und bekomme KEINE Fehler. Die Antwort sicher genug ist jetzt "jsonp1301060523484('url/KiN_150x300.jpg');" aber das ist es nicht! Alles, was du sagst macht Sinn so weit, es ist nur das Letzte bit ich zu kämpfen mit - d.h. Sie bekommen die Daten zurück an den client.

InformationsquelleAutor JasonMHirst | 2011-03-24
Schreibe einen Kommentar