jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法

这真是个让人特别抓心找挠肝的问题,真的差点被这个问题逼的放弃去使用json作为返回类型,而是去用html,但是有的时候就是要较汁一下。(即便现在问题解决了,我还是想说句“妈蛋”,来发泄一下)

其实主要还是自己对json的不够了解,但是很纳闷,网上对路的解决方法几乎没有。所以虽然问题很小,但是还是想要分享出来,希望能帮到需要的人。

首先$.post()格式如下:

$.post(url,data,success(data, textStatus, jqXHR),dataType)

参数描述

url
必需。规定把请求发送到哪个 URL。

data

可选。映射或字符串值。基本是json格式。

success(data, textStatus, jqXHR)

可选。请求成功时执行的回调函数。

dataType

可选。规定预期的服务器响应的数据类型。默认执行智能判断(xml、json、script 或 html)。

示例:

                $.post("../../xxx/ajaxPost.aspx",
                    {
                        action: "xxx",
                        id: xxx
                    },function (data,status) {
                        alert("name="+data.name+",age="+data.age);
                    },
		    "json");

打断点可以正常进入到后台。直到想要的操作完成,组成新的json数据,利用Response.Write()返回,但是无论如何也不走function()方法,之前有想到是json格式的问题,但是改了还是不行。

后来终于终于

后台:

            result = "{\"name\":\"Michael Jordan\",\"age\":\"51\"}";
            Response.Write(result);
            Response.End();

大家注意,都知道json的格式是{"key1”: "value1”, "key2”: "value2”} 这样(或者是把{}中的双引号变成单引号),但是在C#代码部分却是需要在引号(“”)前加上转义字符(\)的,否则永远走不到回调方法。

$.post()方法在以json作为返回类型的时候,是严格要求使用json格式才可以进入回调的。所以……

运行截图:

时间: 2024-10-14 11:04:47

jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法的相关文章

关于javascript的parseInt() 08,09时输出结果为0的原因以及解决方法

先来贴图: 可以发现在使用parseInt()对字符串进行转换时,唯独“08”,“09”转换为0,而其他的都是转换成对应的数字,这到底是什么原因呢? 原来当字符串首位是“0”的时候,js默认其为8进制,所以问题来了,8进制数字只有0-7,所以前面的0-7都没有问题. 然而到了8和9问题就来了,8和9在8进制中是不合格的,所以将其输出为0. 解决方法: 将parseInt的参数加上,指定其转换为10进制就ok了. 唉,还是太年轻!

apt-get update 更新 ubuntu时出现Hash sum mismatch的原因及解决方法

$ sudo apt-get update ...... Hit http://mirrors.163.com trusty/main Sources                                 Hit http://mirrors.163.com trusty/restricted Sources                           Get:17 http://mirrors.163.com trusty/universe Sources [6,399 kB

java写文件时,输出不完整的原因以及解决方法close()或flush()

在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt")); 用到这个的时候一定不能忘了他的伴侣代码.. bw.close(); 或者 bw.flush(); 实际上,FileWriter在写文件时,会把内容存储到一块缓冲区中,当缓冲区满后,才会把缓冲区中的内容写入文件,内容再继续存到缓冲区,如此反复,而flush()会将内存中的内容强制写到文件中,即使内存没满.这

鼠标聚焦到Text输入框时,按回车键刷新页面原因及解决方法

前提 一个form中只有一个输入框,当输入框获取焦点后,点击回车,导致整个页面都刷新,问题解决办法. 1.处理form  在form中添加事件 <form onsubmit="return false;">.......</form> 2.增加一个隐藏的输入框,认为改变单个输入框 <input id="hiddenText" type="text" style="display:none" /&g

Spring MVC 返回类型为字符串时, 返回中文变成&quot;?&quot;处理

Spring MVC 返回类型为字符串时, 返回中文变成"?"处理 Spring controller 如下 @Controller public class SimpleController { @ResponseBody @RequestMapping(value = "/hotel") public String hotel() { return "{\"status\":0,\"errmsg\":null,\

ssm整合时出现 org.springframework.beans.factory.BeanCreationException :Error creating bean with name ‘XXX’ 异常的原因及解决方法

ssm整合时出现 org.springframework.beans.factory.BeanCreationException :Error creating bean with name 'XXX' 异常的原因及解决方法(只是可能出现下列几种,不包含全部) 此异常为:注入 bean 失败异常,也就是找不到注入的bean. 可能有以下几种原因: 1.bean未注解或者注解错误 2.项目整合的时候jar包冲突 3.'XXX'的配置有错误 解决:1,3仔细检查就是,网上大部分的人应该是2这种错误,

使用 ADOX 将 Table 添加到 Catalog 时报“类型无效”的原因和解决方法

http://blog.csdn.net/kfhzy/article/details/6020283 http://blog.csdn.net/kfhzy/article/details/6020545 李维的代码,原来链接的是MS SQL,改成ACCESS后,报 类型无效 错误 原因 除了 adDBTimeStamp 这样的 明显不支持的数据类型外,一般的,也有区别,adVarChar 在ACCESS里是adVarWChar procedure TfrmCreateTable.btnCreat

UEditor 解决拖拽视频元素改变视频尺寸时,无法保存视频尺寸问题的解决方法

UEditor虽然强大,但是bug还是蛮多的.比如插入视频元素后,拖拽视频去缩放尺寸,编辑器并没有将实际的尺寸保存下来.当你点击HTML按钮查看源代码时,width和height还是原来的值,再次点击此按钮回到正常状态,缩略图又回到原来的大小了. 翻源代码翻了蛮久,终于把这个问题解决了.问题就出在插入视频后创建视频HTML字符串和HTML字符串与可视化编辑层转化的地方. 当视频上传完成后,创建一个img用于可视化编辑,将默认width和height设置到img的width和height的属性中.

PHP自动捕捉监控致命错误(500错误) error_get_last() 获取最后一次发生错误信息 register_shutdown_function()在脚本停止执行时注册一个回调函数

通常程序发生致命错误的时候页面空白,想获取错误信息也不难!主要是利用两个函数:error_get_last() 获取最后一次发生错误信息:print_r()后结构如下: Array ( [type] => 8 [message] => Undefined variable: a [file] => C:\WWW\index.php [line] => 2 ) register_shutdown_function()在脚本停止执行时注册一个回调函数: error_reporting(