关于jquery和ajax在项目中具体应用的问题,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于jquery和ajax在项目中具体应用的问题,相关的知识,希望对你有一定的参考价值。

需要做一个文本框,当输入文字的时候就从数据库中去查询数据,然后返回来,在页面上文本框变成一个下拉框,显示检索到的数据,我弄不明白这个事件是jquery中的那个事件,不是鼠标事件吧?该用何技术实现?图画的不好,但能表达意思,请各位指教

参考技术A ajax 是htmljavascript 技术、DHTML 和 DOM 组成 js 代码是运行 Ajax 应用程序的核心代码,帮助改进与服务器应用程序的通信 jquery 是一个开源的ajax的框架库和php或者其他的网页技术可以实现一些特殊效果,比如,出现特效对话框,判断输入的内容等。追问

能说一些实质性的话不

本回答被提问者采纳

为啥我的 jQuery .ajax() 路由的 .done() 方法没有在我的 NodeJS、Express 和 Mongoose 项目中触发?

【中文标题】为啥我的 jQuery .ajax() 路由的 .done() 方法没有在我的 NodeJS、Express 和 Mongoose 项目中触发?【英文标题】:Why is my jQuery .ajax() route's .done() method is not firing in my NodeJS, Express and Mongoose project?为什么我的 jQuery .ajax() 路由的 .done() 方法没有在我的 NodeJS、Express 和 Mongoose 项目中触发? 【发布时间】:2017-03-17 20:37:55 【问题描述】:

试图理解为什么在下面调用了我的销毁路由之后,在客户端 (jQuery) 上我的 .done() 方法没有运行,尽管它是我的 ajax 调用的一部分?

我想要的行为: 我的/:id/destroy 路由应该运行,通过id 销毁报价,然后查询数据库中所有现有的报价。这应该在 jQuery .done() 方法中返回,以附加到现有的 HTML 数据中(以显示新的引号而无需重新加载页面)。

发生了什么: 当销毁路由运行时,会返回 json 数据,但 .done() 方法永远不会在 jQuery ajax 中运行——另外提交表单(尽管我使用了event.preventDefault();——我也尝试过return false,但是表格仍然发送)。结果页面是一个带有我想要的引号的 GET 响应(因此查询本身正在工作),但我不知道我的 JSON 格式是否不正确,或者我是否错误地处理了来自 jQuery ajax 的回调请求。

有什么想法吗? (注意,ejs、express、body-parser 和 mongoose 是本项目的依赖)

我有以下 HTML 和 jQuery 来运行对 /destroy URL 的 AJAX 请求,如下所示:

我的路线

app.get('/:id/destroy', function(req, res)
    // removes quote by id:
    Quote.remove(_id: req.params.id, function(err)
        if (err)
            console.log('Remove was unsuccessful...', err);
            res.json(err);
        ;
        console.log('DELETED');
        // queries for allQuotes:
        Quote.find().sort('vote':'desc').exec(function(err, allQuotes) 
            if (err)
                console.log(err);
             else 
                res.json(allQuotes[0]);
            
        )
    );
);

我的 jQuery

$('form.destroy').submit(function(event)
    event.preventDefault();
    $.ajax(
        url: '/'+$(this).attr('mongoID')+'/destroy',
        method: 'GET',
        data: $(this).attr('mongoID').serialize(),
    )
    .done(function(allQuotes) // this never runs (Why?)
        console.log('Showing quotes now again after delete...');
        buildAllQuotes(allQuotes); // this never runs but appends response to html data
    )
    .fail(function(err)
        console.log('Error with deletion...', err);
    )
    .always(function()
        console.log('Done');
    )
);

我的 HTML

<form action="/'+allQuotes[x]._id+'/destroy" class="destroy" method="GET" mongoID="'+allQuotes[x]._id+'">
    <input type="submit" value="Delete">
</form>

【问题讨论】:

我不确定像 mongoID="'+allQuotes[x]._id+'" 这样的自定义属性。 @Mritunjay 是的,你可以这样做,这有点疯狂。你可以设置任何你想要的自定义属性,但是除非它是一个有效的 html5 属性,否则 dom 不会对它做任何事情......否则它会坐在那里,你可以存储数据或相应地操作它,这是一个很好的技巧需要唯一标识符的时候 可以尝试添加 dataType: 'json' (***.com/a/32580987/2069684), 【参考方案1】:

form 元素中删除action 属性。这将停止提交表单。

HTML

<form class="destroy" method="GET" mongoID="'+allQuotes[x]._id+'">
    <input type="submit" value="Delete">
</form>

由于formajax 调用之后提交,您的done 方法可能不会被触发。

摆弄虚拟action属性,

https://jsfiddle.net/balasuar/atg5m6ym/7631/

【讨论】:

感谢 -- 删除 action 属性后,jquery .submit() 没有触发,所以我可能没有正确设置我的 jQuery 选择器 (form.destroy)...继续退后一步,以新鲜的眼光回来...... @nature mind,它应该在没有 action 属性的情况下工作,但不知道为什么不应该。你能试试这样的假动作吗,action="javascript:void(0);" 这个小提琴正在使用/不使用动作属性,https://jsfiddle.net/balasuar/atg5m6ym/7631/

以上是关于关于jquery和ajax在项目中具体应用的问题,的主要内容,如果未能解决你的问题,请参考以下文章

jquery中ajax使用error调试错误的方法

jQuery绑定ajax:成功在rails 3应用程序中无法用于新创建的(ajax)项目

关于jquery的$ajax不兼容ie的问题

jQuery 在 f:ajax 之后应用 css 类

ssh项目_Jquery的ajax应用,什么是ajax

关于jQuery封装 Ajax请求的一些知识