jquery的ajax问题success:function(data)不执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery的ajax问题success:function(data)不执行相关的知识,希望对你有一定的参考价值。

1.下面是struts.xml里的action信息
<action name="me" class="meAction">
<result name="success">
<param name="root">users_json</param>
</result>
</action>

2.下面是action类(下面涉及到的get,set方法均齐全)
public String execute()
System.out.println("*********");
Map<String, Object> map = new HashMap<String, Object>();
if(!"".equals(name_text)) map.put("name", name_text);
map.put("startIndex", 2);
map.put("endIndex", 4);
try
records = queryUserService.getRecords("getRecordsNum",map);
users = queryUserService.getModels("me",map);
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();

String users_json = JSON.toJSONString(users);
System.out.println(users_json);
return "success";


3.通过ajax获得user_json字符串
<html>
<head>
<script type="text/javascript" src="../js/jquery-1.4.3.js"></script>
</head>
<body>
<form action="me" method="post">
用户名:<input type="text" id="name_text" name="name_text" />

密码:<input type="password" id="pwd_text" name="pwd_text" />

<input type="button" value="查询" id="sbt"/>
</form>
</body>
<script type="text/javascript">
$(document).ready(function()
var name = $('#name_text').val();
var password = $('#pwd_text').val();
$("#sbt").click(function()
alert("1111");
$.ajax(
type:"post",
url:"me",
data:"name="+name,
cache:false,
dataType:"string",
success:function(data)
alert("fffff");
,
error:function(e)
alert(e);

);
);
);
</script>
</html>
<!--叙述结束-->
success:function(data)这个方法不执行,执行的是error:function(e),我很纳闷,后台action已经执行了下面图片是后台执行后users_json的信息,信息都有了,后台应该没错的吧,请大侠帮我看看,为什么success:function(data)方法不执行

如果我没记错的话,$.ajax的datatype,没有string这一选项。
参考:http://api.jquery.com/jQuery.ajax/

String dataType
预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串
参考技术A $.ajax(
type:"post",
url:"me",
data:name:name,
cache:false,
success:successFnt,
error:errorFnt

function successFnt()
alert("fffff");

function errorFnt(e) 
alert(e);

回调函数不能带参数,参数在data对象里传。

参考技术B 在success: 上面一行加一个句“async:false”试试。

如何在同一模板或其他地方使用 Ajax 成功数据?

【中文标题】如何在同一模板或其他地方使用 Ajax 成功数据?【英文标题】:How can i use Ajax success data in same template or somewhere else? 【发布时间】:2016-10-29 00:08:11 【问题描述】:
    $.ajax(
        type: "POST",
        url: "% url 'my_url' %",
        async: false,
        data: formData,
        cache: false,
        contentType: false,
        processData: false,
        success: function(data) 
            console.log(data)
            name = data.name
        error: function(e) 
            alert(e.message);
        
    );

这里我想在模板中使用这个名称变量(在 Django 模板中)。如何直接使用? 我可以像这样使用的方法

<html>
% if myname = = name %
<input type="text" value="name" disable</input>
%endif%
</html>

这里的 name 是一个来自 ajax 成功的 django 视图的变量。

【问题讨论】:

不清楚你问的是什么:AJAX是客户端逻辑,但是客户端没有模板…… 【参考方案1】:

像这样使用你的 ajax 响应

$.ajax(
            type: "POST",
            url: "% url 'my_url' %",
            async: false,
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
            success: function(data) 
                console.log(data)
                name = data.name
            $("#anyID").val(name); // like you can populate the values using id or class
            error: function(e) 
                alert(e.message);
            
        );

【讨论】:

如何在条件下访问名称?在这里我只能填充,但有什么方法可以在条件中使用名称(在模板中)即 % if name = =name % 嗨,我处于条件中%endif%)跨度>

以上是关于jquery的ajax问题success:function(data)不执行的主要内容,如果未能解决你的问题,请参考以下文章

Jquery序列化表单数据返回错误

jQuery form插件----ajaxForm()和ajaxSubmit()方法的使用

js刷新当前页面

express响应前端ajax请求

如何在同一模板或其他地方使用 Ajax 成功数据?

PDO 两次插入相同的数据