使用Jquery进行ajax提交时候遇到的问题

来源:互联网 发布:淘宝怎么联系在线客服 编辑:程序博客网 时间:2024/05/02 16:03

     今天在使用Jquery的ajax提交数据的时候遇到了一个问题,jquery 代码如下:

          

 $.ajax({
               url: "XmlHttp/FamousVisionHandler.ashx",
               type: "Post",
               contentType: "application/x-www-form-urlencoded;charset=UTF-8",
               data: "id=5",
               dataType: "json",
               async: true,
               beforeSend: function () {

               },
               complete: function () {

               },
               success: function (json) {
                   if (json != null) {
                         $("#div").html(json.FamousContent);
                      
                   } else {
                         $("#div").html("暂时没有数据");
                   }
               }
           });

 但是success怎么都不执行~!!开始还以为是不是后台在生成JSON格式的时候有错误了,说到这里 我觉得对json格式还有要有一定的记录:

        我认为的json格式应该是这样的: { "name":"nameValue"  },这种形式表示有个名为name的Json对象,值为nameValue.如果有两个对象就使用","分隔例如{"name1","nameValue1","name2","nameValue2"} ,这中间表示有两个JSON对象。

        如果一个对象中的值是一个数组,那么表示方式 应该如下:{"name":[{ "name1":"nameValue1","name2":"nameValue2"  } ] },这种方式下使用的时候就是json.name[0]["name1"],这样就可以获取name1的值了,好了 对于Json的常用的几种数据格式大概了解下,下面接着回到上面的问题到底是那里出错了呢~!!

        我检查了数据格式后,并没有出错。在检查下后台获取数据代码:

        context.Response.ContentType = "application/x-www-form-urlencoded;";
        context.Response.Charset = "UTF-8";
        try
        {
            string result = string.Empty;
            if(TRequest.GetFormInt("id",0)>0){
                         result = CreateJson(mFamousVision);
             }
            context.Response.Write(result);
        }
        catch (Exception ex)
        {
            ErrHandler.WriteError(ex.Message);
        }

       /// <summary>
      /// 创建返回数据
    /// </summary>
    /// <returns></returns>
    private string CreateJson(T_Famous mFamous)
    {
      
        StringBuilder sb = new StringBuilder();
        string strConnet =Utils.DecodeStr(mFamous.CategoryText);

        sb.Append("{ \"Title\":\""+mFamous.Name+"\",");
        sb.Append("\"Content\":\""+ strConnet+ "\" }");
         return sb.ToString();
    }

  

     一切正常也没有什么问题,随后就用sb.Append("\"Content\":\" 123\" }");来替代sb.Append("\"Content\":\""+ strConnet+ "\" }");这次运行居然成功了。

    那看来是string strConnet =Utils.DecodeStr(mFamous.CategoryText);这段的问题了,我知道这段中是文本编辑器的内容,难道文本编辑器中的标签不能json格式化~!!

   如果是这样的话 那麻烦就大了~!!后面只好使用<p><br/>这样的标签进行替换,发觉还是可以成功运行的~!!这下麻烦了~!! 到底是什么让他这样呢~!!只好重新调试对比mFamous.CategoryText中的内容,随后发现中间有段转义字符\r\n,难道是因为这个的原因,使用空白符替换后,果然成功运行。没有问题。

     原来在\r\n不能生成Json格式,今天算是学了一招了,特次记录下来。

原创粉丝点击