2016-12-22 3 views
-1

Я хочу добавить элементы в свой список при нажатии кнопки, тогда он должен вернуть значение, добавленное в listbox через ajax.Что я сделал с моим кодом Ajax?

Вот код, что я пробовал.

$('#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 код:

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

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

Назад конец Код:

[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

Вместо '' alert ("Error =" + error); 'use' 'console.log (« Ошибка: », ошибка);' '- таким образом вы действительно можете увидеть, какой ответ на ошибку возвращается сервером. –

+0

Вы пытались отладить свой код в браузере? это может предоставить вам ошибку и ее объекты – NMathur

+0

@ mpf82 Теперь я обновил. пожалуйста, проверьте ошибку –

ответ

1

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

Проблема: с этой части кода. data: '{listItems:' + item + '}' Вы не строите JSON правильно.

Приведенный выше код возвращает данные как "{listItems:testing}", что является недопустимым JSON. Заметьте, что нет " " вокруг строки testing, о чем говорит ошибка.

использовать JSON.stringify() вместо того, чтобы вручную загрязнять руки. Замените эту строку кода с

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

Это возвращает данные как "{"listItems":"testing"}" и его действительным JSON.

+0

Я изменил, как вы упомянули. Это ошибка '' {«Сообщение»: «Ссылка на объект не установлена ​​в экземпляр объекта.», «StackTrace»: «в DevExpressDemo.ReportSalesAll.setRightListBoxitems (String listItems) в d: \\ Faisal Private \\ DevExpressDemo \\ DevExpressDemo \\ ReportSalesAll.aspx.cs: строка 181 "," ExceptionType ":" System.NullReferenceException "}" ' –

+0

@mohamedfaisal good ... теперь элемент управления попадает на сервер .. который разрешен .. следующая ошибка может быть из-за этого 'rs.lstRight.Items [0] .Text = listItems;' .. вы инициализировали 'rs', но не' lstRight' в нем. можете ли вы подтвердить –

+0

параметр listItems'. даже я попытался вернуть прямую строку, как этот «return» Результат работает «'. По-прежнему та же ошибка, о которой я упомянул выше –