2016-12-22 3 views
-1

Ich möchte Elemente in meiner Listbox hinzufügen, wenn auf die Schaltfläche geklickt wird, dann muss der Wert zurückgegeben werden, der in Listbox durch Ajax hinzugefügt wurde.Was habe ich falsch mit meinem Ajax-Code gemacht?

Hier der Code, was ich ausprobiert habe.

$('#right').click(function() { 
    alert("Start process"); 
    var item = "testing"; 

    $.ajax({ 
     url: 'ReportSalesAll.aspx/setRightListBoxitems', 
     method: 'post', 
     ContentType: 'application/json', 
     data: '{listItems:' + item + '}', 
     dataType: 'json', 
     success: function (data) { 
      alert("result = " + data.d.text) 
     }, 
     failure: function (response) { 
      alert(response.d); 
     }, 
     error: function (error) { 
      alert("Error = "+error); 
     } 
    }); 
}); 

Aspx-Code:

<input type="button" id="right" value=">>" /> 

<asp:ListBox ID="lstRight" runat="server" SelectionMode="Multiple" Width="100%" Height="220"></asp:ListBox> 

Zurück Endcode:

[System.Web.Services.WebMethod] 
public static string setRightListBoxitems(string listItems) 
{ 
    ReportSalesAll rs = new ReportSalesAll(); 
    rs.lstRight.Items[0].Text = listItems; 
    rs.lstRight.Items[0].Value = "faisal "+listItems ; 
    return rs.lstRight.Items[0].Text; 
} 

I got the error when I run Error = [Object object]

readyState:4, status:500 statusText:Internal server error responseText: Message: "invalid JSON primitive: testing.",StackTrace":" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()

+1

Statt "alert (" Error = "+ error);' 'verwenden' 'console.log (" Fehler: ", Fehler);' '- so können Sie tatsächlich sehen, welche Fehlerantwort der Server zurückgibt. –

+0

haben Sie versucht, Ihren Code im Browser zu debuggen? Dies kann Ihnen den Fehler und seine Objekte – NMathur

+0

@ mpf82 Jetzt habe ich aktualisiert. Bitte überprüfen Sie den Fehler –

Antwort

1

"invalid JSON primitive: testing.",StackTrace":" at ...

Problem: mit diesem Teil des Codes ist. data: '{listItems:' + item + '}' Sie erstellen das JSON nicht ordnungsgemäß.

Der obige Code gibt die Daten als "{listItems:testing}" zurück, was JSON ungültig ist. Beachten Sie, dass es keine " " um die Zeichenfolge testing gibt, was der Fehler sagt.

Lösung: Verwenden Sie JSON.stringify() anstatt manuell Ihre Hände schmutzig zu bekommen. Ersetzen Sie die obige Codezeile mit

data: JSON.stringify({listItems:item}); 

Dies gibt die Daten als "{"listItems":"testing"}" und seine eine gültige JSON.

+0

Ich änderte, wie Sie erwähnten. Dies ist der Fehler '" {"Message": "Objektverweis nicht auf eine Instanz eines Objekts gesetzt.", "StackTrace": "bei DevExpressDemo.ReportSalesAll.setRightListBoxitems (String listItems) in d: \\ Faisal Private \\ DevExpressDemo \\ DevExpressDemo \\ ReportSalesAll.aspx.cs: Zeile 181 "," ExceptionType ":" System.NullReferenceException "}" ' –

+0

@mohamedfaisal gut ... jetzt trifft das Steuerelement den Server .. der behoben ist .. der nächste Fehler möglicherweise wegen dieser 'rs.lstRight.Items [0] .Text = listItems;' .. Sie haben 'rs' initialisiert, aber nicht' lstRight' darin. Können Sie bestätigen, dass –

+0

'listItems' Parameter ist. sogar ich habe versucht, direkte Schnur wie dieses 'Rückkehr "Ergebnis working" 'zurückzugeben. Immer noch der gleiche Fehler, was ich oben erwähnte –

Verwandte Themen