0

このエラーメッセージが表示される理由を知っている人はいますか?

エラーメッセージ:

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

jQuery:

関連する jQuery は次のようになります。

$.ajax({
    type: 'POST',
    url: '/webservices/minimised.asmx/UpdateState',
    data: '{ strTabID:' + tab + ', strWidgetID:' + widget[1] + ', intState:' + state + ' }',

サーバーに投稿されたデータ

この例の場所:

データは次のようになります ={ strTabID:tab_group_48, strWidgetID:portlet_4, intState:0 }

C#:

そして、関連する webservice セクション c# は次のようになります。

[WebMethod()]
public int UpdateState(string strTabID, string strWidgetID, int intState)
{
    intTabID = Convert.ToInt32(strTabID.Replace("tab_group_", ""));
    strQuery = "update columns set unminimised = @state where tabs_id = @tab and widgets_id = @widget";

    intWidgetID = Convert.ToInt32(strTabID.Replace("portlet_", string.Empty));

    using (connection = new SqlConnection(ConfigurationManager.AppSettings["connString"]))
    {
        using (command = new SqlCommand(strQuery, connection))
        {
            command.Parameters.Add("@tab", SqlDbType.Int, 4).Value = intTabID;
            command.Parameters.Add("@widget", SqlDbType.Int, 4).Value = intWidgetID;
            command.Parameters.Add("@state", SqlDbType.Int, 4).Value = intState;

            connection.Open();
            intAffectedRows = command.ExecuteNonQuery();
            connection.Close();
        }
    }

    return intAffectedRows;
}
4

2 に答える 2

2

実際に tab_group_48 をアポストロフィで囲む必要があるようです。これを試して:

data: "{ strTabID:'" + tab + "', strWidgetID:'" + widget[1] + "', intState:'" + state + "' }"
于 2012-07-18T12:17:32.940 に答える
2

JSON データ形式が無効です。値を一重引用符で囲む必要があります。

"{ strTabID: '" + tab + "', strWidgetID: '" + widget[1] + "', intState: '" + state + "' }";
于 2012-07-18T12:10:56.710 に答える