为什么用$.ajax()的时候,success方法没有执行,我在firefox里设了断点,它直接跳过了

_问津少年 2013-12-23 11:23:37
这是源代码:
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="flot.aspx.cs" Inherits="flot" %>

<%@ Register Assembly="DevExpress.Web.v12.2, Version=12.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link href="Styles/layout.css" rel="stylesheet" type="text/css" />
<script src="Scripts/jquery.js" type="text/javascript"></script>
<script src="Scripts/jquery.flot.js" type="text/javascript"></script>
<script src="Scripts/jquery.flot.stack.js" type="text/javascript"></script>
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="Scripts/excanvas.min.js"></script><![endif]-->
<title></title>
</head>
<body>
<form runat="server">
<h1>
学生成绩</h1>
<div id="placeholder" style="width: 600px; height: 300px;">
</div>
<div>
<dx:ASPxButton ID="btnShow" runat="server" Text="显示" AutoPostBack="False">
</dx:ASPxButton>
</div>
<script id="source" type="text/javascript">
$(document).ready(function () {
$('#btnShow').click(function () {
var dat = [];
var data;
$.ajax({
type: "POST",
url: "flot.aspx/heh",
data: "{}",
dataType: "JSON",
//cache: false,
//async:false,
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data != null) {
//var dataObj = eval("[" + data + "]");
var back = $.parseJSON(data);
for (var i = 0; i < back.data.length - 1; i++) {
dat.push([back.data[i], back.data[i + 1]]);
i++;
}
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {

alert(errorThrown);
}
});

var stack = 0, bars = true, lines = false, steps = false;
function plotWithOptions() {
$.plot($("#placeholder"), [dat], {
series: {
stack: stack,
bars: { show: bars, barWidth: 0.6 }
}
});
}
plotWithOptions();
});
});
</script>
</form>
</body>
</html>




后台;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Web.Script.Serialization;
using System.Collections;
using System.Text;
using Newtonsoft.Json;
using DevExpress.Utils.OAuth.Provider;

public partial class flot : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
[System.Web.Services.WebMethod()]
public static string heh()
{
JavaScriptSerializer jss = new JavaScriptSerializer();
//int[,] data = new int[4, 2];
JSON js = new JSON();
js.data = new int[4, 2];
js.data[0, 0] = 1; js.data[0, 1] = 24; js.data[1, 0] = 2; js.data[1, 1] = 35; js.data[2, 0] = 3; js.data[2, 1] = 19; js.data[3, 0] = 4; js.data[3, 1] = 30;
//Response.Write(jss.Serialize(data));
js.label = "fhjksjk";
return jss.Serialize(js);
}
public class JSON
{
public int[,] data;
public string label;

}
}


求各位大神帮忙看看,小弟菜鸟,对Ajax不熟,想从数据库读数据却读不出来
...全文
954 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
_问津少年 2014-01-16
  • 打赏
  • 举报
回复
这是个图表插件
天空丶蒋 2014-01-01
  • 打赏
  • 举报
回复
<script src="Scripts/jquery.flot.js" type="text/javascript"></script>     <script src="Scripts/jquery.flot.stack.js" type="text/javascript"></script> 木有这两个~~
天空丶蒋 2014-01-01
  • 打赏
  • 举报
回复
<dx:ASPxButton ID="btnShow" runat="server" Text="显示" AutoPostBack="False"> </dx:ASPxButton> 这个 是什么??
天空丶蒋 2014-01-01
  • 打赏
  • 举报
回复
var back = $.parseJSON(data); 貌似这段.....有点问题 我复制你的代码运行试试、、
_问津少年 2013-12-28
  • 打赏
  • 举报
回复
你有 dataType: "JSON", 所以 success: function (data) { //这个data 已经是 json 对象了 你再这样做就不对了 if (data != null) { //var dataObj = eval("[" + data + "]"); var back = $.parseJSON(data); 你好,可是我之前没用data!=null时,它也是出不来数据啊?关键是后台返回了json数组,但是前台执行到success时就跳到error然后又跳到了下面,根本不执行这两个函数
_问津少年 2013-12-28
  • 打赏
  • 举报
回复
回复于: 2013-12-23 13:28:55 debug 下。 看看后台返回的是什么 你好,后台返回的就是json数组,[1,24,2,35,...]
_问津少年 2013-12-28
  • 打赏
  • 举报
回复
1楼你好,button事件的AutoPostBack属性我已经设为false了,所以它不存在回发的
大写的A 2013-12-27
  • 打赏
  • 举报
回复
像这种情况一般是服务端出错导致的; 服务端最好加上try catch,就算执行错误,扑捉到错误之后也做返回(返回错误信息),以便调试
_拙计 2013-12-25
  • 打赏
  • 举报
回复
var back = $.parseJSON(data);你把这句改成var back = eval(data)吧 然后alert一下 看看有没有获取到,如果没有,那是不是你后台没返回到success函数
未知数 2013-12-23
  • 打赏
  • 举报
回复
1.不要用服务端button,点击时可能会自动提交表单,应使用html的<button type="button"> 2.调试工具看一下http请求,看看response是什么
xuzuning 2013-12-23
  • 打赏
  • 举报
回复
你有 dataType: "JSON", 所以 success: function (data) { //这个data 已经是 json 对象了 你再这样做就不对了 if (data != null) { //var dataObj = eval("[" + data + "]"); var back = $.parseJSON(data);
Go 旅城通票 2013-12-23
  • 打赏
  • 举报
回复
asp.net webservice返回的json数据只包含一个d属性,你要eval data.d,而不是data对象

还有没有执行到success是什么意思。是执行到error分支了?
tony4geek 2013-12-23
  • 打赏
  • 举报
回复
debug 下。 看看后台返回的是什么

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧