Javascript “消息”:“传入的对象无效(JSON数据格式问题)
我正试图将json发送到我的webmethod,但下面显示了错误Javascript “消息”:“传入的对象无效(JSON数据格式问题),javascript,json,webmethod,Javascript,Json,Webmethod,我正试图将json发送到我的webmethod,但下面显示了错误 {"Message":"Invalid object passed in, \u0027:\u0027 or \u0027}\u0027 expected. (17): { \"mappingData :\"\"[\"Ref No,0\",\"Date,0\",\"Amt,0\",\"Sender Name,0\",\"Sender Add,0\",\"Beneficiary Name,0\",\"Beneficiary Add
{"Message":"Invalid object passed in, \u0027:\u0027 or \u0027}\u0027 expected. (17): { \"mappingData
:\"\"[\"Ref No,0\",\"Date,0\",\"Amt,0\",\"Sender Name,0\",\"Sender Add,0\",\"Beneficiary Name,0\",\"Beneficiary
Add,0\",\"Phone,0\",\"Secret Code,0\",\"Secret Ans,0\",\"Preferred Id,0\"]\"}","StackTrace":" at System
.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)\r\n at System
.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n at System
.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit
, JavaScriptSerializer serializer)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize
(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n at System.Web.Script
.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n at System.Web.Script.Services
.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n
at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext
context)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context,
WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}
我的Javascript代码是:
function tableToJson() {
var myArray = [];
$('.dataRow').each(function(){
var data= $(this);
var ColumnAlias= data.find('div.ColumnAlias p').html();
var TableNames=data.find('div.ddlTableNames select').val();
var mainData=ColumnAlias+','+TableNames;
myArray.push(mainData);
});
var json_text = JSON.stringify(myArray);
if (json_text!=null) {
$.ajax({
type: "POST",
url: "CorrespondentTemplate.aspx/SaveMappings",
data: '{ "mappingData:""'+json_text+'"}',
contentType: "application/json",
success: function (data) {
alert(data.d);
}
});
}
return false;
}
请检查这条线路,我不知道它出了什么问题
data: '{ "mappingData:""'+json_text+'"}',
引号放错地方了。应该是
data: '{ "mappingData":"'+json_text+'"}',
或者你可以这样做
data: JSON.stringify({ mappingData: myArray }),
我试图用下面的方法来解决上述问题
function tableToJson() {
var myArray = [];
$('.dataRow').each(function(){
var data= $(this);
var ColumnAlias= data.find('div.ColumnAlias p').html();
var TableNames=data.find('div.ddlTableNames select').val();
var mainData=ColumnAlias+','+TableNames;
myArray.push(mainData);
});
var json_text = JSON.stringify(myArray);
var jsonFormat={mappingData:json_text};
var jsonFormatInString=JSON.stringify(jsonFormat);
if (json_text!=null) {
$.ajax({
type: "POST",
url: "CorrespondentTemplate.aspx/SaveMappings",
data: jsonFormatInString,
contentType: "application/json",
success: function (data) {
alert(data.d);
}
});
}
return false;
}
这三条线帮我完成了任务
var json_text = JSON.stringify(myArray);
var jsonFormat={mappingData:json_text};
var jsonFormatInString=JSON.stringify(jsonFormat);
仍然存在错误:{Message:传入的对象无效,\u0027:\u0027或\u0027}\u0027应为。17:{\mappingData:\[\Ref No,0\,\Date,0\,\Amt,0\,\Sender Name,0\,\Sender Add,0\,\consibilizer Name,0\,\Phone,0\,\Secret Code,0\,\Secret Ans,0\,\Preferred Id,0\]},StackTrace:atSystem@Gaurav123我更新了。像JSON一样发送,为什么是引号?我尝试了更新的。新错误:{Message:Invalid JSON primitive:mappingData.,StackTrace:at System.Web.Script.Serialization由于此错误,我尝试了一些操作different@Gaurav123尝试像{'mappingData':'+myArray+'}一样传递myArray,您的意思是将数据作为数据发送:{“mappingData”:“+myArray+”}请同时显示您的html,div.ColumnAlias p和div.ddlTableNames选择内容认真吗?您无法发现?我发现了我的朋友,但它仍然不起作用。那么为什么,在您发现这个明显的错误后,您将其留在您的问题中?????您在跟踪我们吗?即使在发现它不起作用后。我尝试了很多方法好的……尝试一下你想这样做,并且只让我知道你这边做了一次。你难道看不到我们面临的错误吗。看看Zee的答案。我想我错过了它;顺便说一句,谢谢你的帮助。我尝试了很长时间,但在与你讨论后,我有了一些想法,我尝试并成功了:巨魔。 Zee是木偶吗?