2012-11-16 25 views
1

我试图从运行jQuery的AJAX技术发送消息,但得到以下错误JSON的原始错误与jQuery和asp.net

{"Message":"Invalid JSON primitive: .","StackTrace":" at 
System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() at 
System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth) at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth) 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"} 

我jQuery代码:

function sendmessage(){ 
var project_id = $("#DropDownList1 option:selected").val(); 
var formstatus = $("#DropDownList4 option:selected").val(); 
var formcode = $('#FormCText').val(); 
var uniquecode = getunique(); 
var to = $('.showto').attr("id"); 
var cc = getcc(); 

if ($('#urgent').prop("checked"==true)) 
{ 
var d = new Date(); 
var duedate = d.getFullYear() + "/" + (d.getMonth()+1) + "/" + d.getDate(); 
var urg = 1; 
} 
else 
{ 
var duedate=$('#datepicker').val(); 
var urg = 0; 
} 

if($('#readreceipt').prop("checked"==true)) 
{ 
var receipt = 1; 
} 
else{ 
var receipt = 0; 
} 
var fsub = $('#fsub').val(); 
var nicE = new nicEditors.findEditor('message'); 
var message = nicE.getContent(); 
alert("'project_id':'"+ project_id+"','formstatus':'"+ formstatus+"','formcode':'"+formcode+"','uniquecode':'"+ uniquecode+"','tor':'"+to+"','cc':'"+cc+"','duedate':'"+duedate+"','urg':'"+urg+"','receipt':'"+receipt+"','sub':'"+fsub+"','message':,'"+message+"'"); 

$(document).timer = setTimeout(function() { 
alert("now sending values"); 
$.ajax({ 
    type: "POST", 
    url: "consoservice.asmx/sendmessage", 
    data: "{'project_id':'" + project_id+ "','formstatus':'" + formstatus+ "','formcode':'" + formcode + "','uniquecode':'ghfg','tor':'"+to+"','cc':'"+cc+"','duedate':'"+duedate+"','urg':'"+urg+"','receipt':'"+receipt+"','fsub':'"+fsub+"','message':,'"+message+"'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
    if (msg.d == "sent") 
    { 
alert('message sent successfully for approval'); 
    } 
    else{ 
    alert(msg.d); 
    } 
    // Do something interesting here. 
    } 
}); }, 100); 
} 

我的服务功能码

<System.Web.Services.WebMethod()> _ 
    <System.Web.Script.Services.ScriptMethod()> _ 
    Public Function sendmessage(ByVal project_id As String, ByVal formstatus As String, ByVal formcode As String, ByVal uniquecode As String, ByVal tor As String, ByVal cc As String, ByVal duedate As String, ByVal urg As String, ByVal receipt As String, ByVal fsub As String, ByVal message As String) As String 

     MsgBox("reached") 
     Dim ip As String = System.Web.HttpContext.Current.Request.UserHostAddress 
     Dim usern As String = CookieUtil.GetEncryptedCookieValue("user_id") 
     Dim returnvalue As String 
     Dim ari As New moduleclass 
     Dim i As Integer 
     Try 
      i = ari.InsertAp_module_message(usern, tor, formcode, cc, formstatus, duedate, receipt, urg, fsub, message, -1, uniquecode, 0, 0, DateTime.Now, ip, 0) 
     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 

     If i > 0 Then 
      returnvalue = "sent" 
     Else 
      returnvalue = "not sent" 
     End If 

     Return returnvalue 
    End Function 
+0

是逗号 '' 哈哈...感谢答案 – user1820110

+0

我很高兴你有错误.. – Pranav

回答

2

通过系统抛出的异常,只有当你要发送的数据是不正确的格式出现,所以双发送前检查数据。

我想您发送应该是这样的数据: -

Senddata={"project_id": project_id,"formstatus": formstatus,........}; 

和Ajax调用: -

$.ajax({ 
    type: "POST", 
    url: "consoservice.asmx/sendmessage", 
    data: JSON.stringify(Senddata), 
............ 
.............. 
});