我的Ajax代码出了什么问题?

时间:2016-12-22 11:40:28

标签: javascript c# jquery ajax

我想在单击按钮时在列表框中添加项目,然后,它必须返回通过ajax在listbox中添加的值。

这是代码,我尝试过的。

$('#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;
}
  

我在运行Error = [Object object]

时收到错误消息      

readyState的:4,   状态:500   statusText:内部服务器错误   responseText:消息:“无效的JSON原语:testing。”,Stack.Trace“:”在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()

1 个答案:

答案 0 :(得分:1)

  

“无效的JSON原语:测试。”,StackTrace“:”at ...

问题:是这部分代码。 data: '{listItems:' + item + '}'您没有正确构建JSON。

上面的代码将数据作为"{listItems:testing}"返回,这是无效的JSON。请注意,字符串" "周围没有testing,这就是错误所说的内容。

解决方案:使用JSON.stringify()而不是手动弄脏。用

替换上面的代码行
data: JSON.stringify({listItems:item});

这会将数据返回为"{"listItems":"testing"}",并将其作为有效的JSON。