使用jquery 的ajax调用总是错误亲测的解决方法_AJAX相关

使用jquery 的ajax功能调用一个页面,却发现总是出现错误。
js代码如下

复制代码 代码如下:

$.ajax({
type: 'post',
url: 'TestData.aspx',
data: {
language_type: 'cn'},
dataType: 'json',
success: function (data) {
alert('ok');
},
error: function (data) {
alert('err');
});
}

TestData.aspx代码如下,省略了后边一些代码

复制代码 代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestData.aspx.cs" Inherits="Demand_TestData" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

TestData.aspx.cs代码如下

复制代码 代码如下:

public partial class Demand_TestData : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<TestC> t=new List<TestC> ();
for (int i = 0; i < 10; i++)
{
TestC c = new TestC();
c.RD_ID = i;
t.Add(c);
}
string test = JsonConvert.SerializeObject(t);
Response.ContentType = "application/Json";
Response.Write(test);
Response.Clear();
}
}
public class TestC
{
public int RD_ID
}

可就是这么短短几行代码,jquery总是报错,如果把 dataType: 'json', 修改为其他类型就不会错了,很奇怪,可我的系统里,需要的是'json对象
最后经过反复测试才发现修改了如下地方的代码后终于正常了
1去掉TestData.aspx.cs页面中的Response.Clear();具体什么原因不清楚
2修改类TestC为如下形式,也就是给字段添加了读取设置属性

复制代码 代码如下:

public class TestC
{
private int rD_ID;
public int RD_ID
{
get { return rD_ID; }
set { rD_ID = value; }
}
}

3删除TestData.aspx页面中的所有代码,只保留第一行,修改后的代码如下

复制代码 代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestData.aspx.cs" Inherits="Demand_TestData" %>

经过这么多测试终于正常了
我发现使用jquery的ajax的经常回跳入错误的处理流程,尤其是 dataType: 'json',看来jquery有很严格的验证机制,看来这个一定要注意,否则就会错误

时间: 2024-09-15 15:52:57

使用jquery 的ajax调用总是错误亲测的解决方法_AJAX相关的相关文章

使用jquery 的ajax调用总是错误亲测的解决方法

使用jquery 的ajax功能调用一个页面,却发现总是出现错误. js代码如下 复制代码 代码如下: $.ajax({ type: 'post', url: 'TestData.aspx', data: { language_type: 'cn'}, dataType: 'json', success: function (data) { alert('ok'); }, error: function (data) { alert('err'); }); } TestData.aspx代码如下

ajax传送参数含有特殊字符的快速解决方法_AJAX相关

JQuery AJAX中遇到这样一个问题,参数中包含特殊字符,比如&'#@等, 这时执行AJAX的时候就会出问题,因为所传的参数变了.看个示例就明白: 方案一: $.ajax({ url: '/ashx/ajax.ashx', type: 'post', data: 'option=delete&name=11&adb, success: function (data) { if (data != 'error ') { } } }); ' 上面执行的ajax就是异步删除一个nam

ajax的get请求时缓存处理解决方法_AJAX相关

本文实例讲述了ajax的get请求时缓存处理解决方法.分享给大家供大家参考.具体分析如下: 很多时候在Ajax的get方法调用的时候由于缓存的原因无法及时获取正确的数据,这里就来分析一下解决这一问题的方法: 1. 在url后面添加一个随机数,如: 复制代码 代码如下: http://www.test.com?a=a&b=b&r=Math.random(); 2. 在url后面添加时间戳: 复制代码 代码如下: var t = new Date().getTime(); http://www

有关Ajax跨域问题的两种解决方法_AJAX相关

概述 Ajax跨域是前端开发中常见的问题,本文描述了以Google浏览器Chrome作为客户端和以Tomcat作为Web服务器的情况下的解决办法. 问题现象 当出现跨域访问的时候ajax通常会报类似如下错误: XMLHttpRequest cannot load http://192.168.2.12:8001/oss/api/version/check. No 'Access-Control-Allow-Origin' header is present on the requested re

ajax的responseText乱码的问题的解决方法_AJAX相关

关于ajax的responseText乱码的问题这个问题让我和纠结百度了好多都说是javascript的编码问题但是我的 javascript的编码是和myeclipse一样的为什么还会出现问题.最后猜测可能是服务端没有设置返回的字符的 返回类型.只需在服务端加上 复制代码 代码如下: response.setcontentType("text/html") response.setcharacterEncoding("charset")返回的字符编码是类型.

jQuery中ajax的使用与缓存问题的解决方法

本篇文章主要介绍了jQuery中ajax的使用与缓存问题的解决方法.需要的朋友可以过来参考下,希望对大家有所帮助 1:GET访问 浏览器 认为 是等幂的 就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配] 所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果   POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的)   防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之

Ajax发送和接收二进制字节流数据的方法_AJAX相关

HTML5 Ajax 2.0标准中,增强了Ajax的许多功能,包括发送FormData数据,上传数据进度条等诸多功能.但实际上,Ajax可以字节发送二进制数据. 发送二进制数据 var oReq = new XMLHttpRequest(); oReq.open("POST", url, true); oReq.onload = function (oEvent) { // Uploaded. }; var blob = new Blob(['abc123'], {type: 'tex

jquery1.8版本使用ajax实现微信调用出现的问题分析及解决办法_AJAX相关

先给大家说下问题背景:最近在做一个项目,开发微信的某个功能,使用的是asp.net开发,jquery1.8.0版本. 在微信中点击按钮触发事件,调用ajax与服务器端进行交互,回调函数走的是error. 分析原因:首先我想到的是返回的数据类型有问题,因为在jquery 版本在1.4以上对json的格式非常严格,需要符合{"target":true,"message":"成功"}这样的格式.用JSON.stringify()函数分析了respons

jQuery中ajax的使用与缓存问题的解决方法_jquery

1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的) 防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之就是使每次访问的URL字符串不一样的] 设计WEB页面的时候 也应该遵守这个原则 2:一.谈Ajax的Get和Post的区别