我想在单击按钮时在列表框中添加项目,然后,它必须返回通过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()
答案 0 :(得分:1)
“无效的JSON原语:测试。”,StackTrace“:”at ...
问题:是这部分代码。 data: '{listItems:' + item + '}'
您没有正确构建JSON。
上面的代码将数据作为"{listItems:testing}"
返回,这是无效的JSON。请注意,字符串" "
周围没有testing
,这就是错误所说的内容。
解决方案:使用JSON.stringify()
而不是手动弄脏。用
data: JSON.stringify({listItems:item});
这会将数据返回为"{"listItems":"testing"}"
,并将其作为有效的JSON。