天道酬勤,学无止境

How to set a timer using jQuery to sent HTTP post data of HTML form

I have an HTML form that I need to post to the server with HTTP POST and input data.

Specifically, I need to send only the parameter values of all the checkboxes that are checked in the form.

I need to do it if the user doesn't do it himself in 10 minutes.

I am not sure the best way to achieve this but for now I am trying to use jQuery do that but sadly I don't know anything about JavaScipt or jQuery so I am trying to learn it but failing to achieve something as simple as that.

I need to the run the following after 10 minutes since the page on which the form is loads.

    $("document").ready(function() {            
        var checkedInputElements = $(":input[value=true]");
        var paramNames = [];
        jQuery.each(checkedInputElements, function() {
            var paramName = $(this).attr("name");
            paramNames.push(paramName);
        });
        $("form").submit(function() {
            jQuery.post({
              type: 'POST',
              url: "http://localhost:8080/wickedlynotsmart/auto-submit-form",
              data: paramNames
          });
          return true;
        });
    });  

I am not sure if the code above is correct or not. I am still working on it. Could someone suggest me a guide which I could use to write a timer so that this code runs after the 10 minutes are over since the page loads?

Thanks.

EDIT:

<%@ include file="/WEB-INF/views/include.jspf" %>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>wikedlynotsmart.com</title>
    <link rel="stylesheet" type="text/css" href="<c:url value="/resources/syntaxhighlighter/styles/shCore.css" />" />
    <link rel="stylesheet" type="text/css" href="<c:url value="/resources/syntaxhighlighter/styles/shThemeDefault.css" />" />

    <script type="text/javascript" src="<c:url value="/resources/syntaxhighlighter/scripts/shCore.js" />"></script>
    <script type="text/javascript" src="<c:url value="/resources/syntaxhighlighter/scripts/shBrushJava.js" />"></script>
    <script type="text/javascript">
         SyntaxHighlighter.all()
    </script>
    <script type="text/javascript" >
        //auto-submit-form javascipt code
    </script>   
</head>
<body>
    <jsp:include page="/WEB-INF/views/header.jsp" />
    <div id="thing">
        <form id="form" action="<c:url value="/wikedlynotsmart/auto-submit-form" />" method="post">             
            <ol>
                <c:forEach items="${things}" var="thing">
                    <li>${thing.something}</li>
                    <c:forEach items="${matters}" var="matter">
                        <table>         
                            <tr>
                                <td><input type="checkbox" name="tid${thing.id}-mid${matter.id}" value="true"/></td>
                                <td>${matter.somematter}</td>
                            </tr>       
                        </table>                    
                    </c:forEach><br></br>
                </c:forEach>        
            </ol>   
            <input type="submit" value="submit the thing" class="button"/>
        </form>
    </div>
    <jsp:include page="/WEB-INF/views/footer.jsp" />    
</body>
</html>

This is the page I am working on and trying to get things work for me.

评论

This will do:

setInterval(submit_me, 600000); // (1000 * 60 * 10 = 600000)

function submit_me() {

    $('#form').submit();

}

Shorter version:

setTimeout(function() { $('#form').submit(); }, 5000);

Use setTimeout(function, millisDelay)

$("document").ready(function() {            
    setTimeout(function(){
        var checkedInputElements = $(":input[value=true]");
        var paramNames = [];
        jQuery.each(checkedInputElements, function() {
            var paramName = $(this).attr("name");
            paramNames.push(paramName);
        });
        $("form").submit(function() {
            jQuery.post({
              type: 'POST',
              url: "http://localhost:8080/wickedlynotsmart/auto-submit-form",
              data: paramNames
          });
          return true;
        });
    }, 600000);
});  

NB. setTimeout(function, millisDelay) is a built in javascript function - it's not part of jQuery or any other library

With a success handler:

$("document").ready(function() {            
    setTimeout(function(){
        var checkedInputElements = $(":input[value=true]");
        var paramNames = [];
        jQuery.each(checkedInputElements, function() {
            var paramName = $(this).attr("name");
            paramNames.push(paramName);
        });
        $("form").submit(function() {
            jQuery.post({
              type: 'POST',
              url: "http://localhost:8080/wickedlynotsmart/auto-submit-form",
              data: paramNames,
              success: function(data, textStatus, jqXHR) {
                  alert(data); //data contains the response from the servlet you posted to.
                  document.location = "http://Where-I-want-to-redirect-to";
              }
          });
          return true;
        });
    }, 600000);
}); 

Are anythin working at all? Use console.log() or alert() to follow the code.

You´re passing the document as a string.

$("document").ready(function() { ...

should be

$(document).ready(function() { ...

Regarding the timer to submit the form; your example just bind the ajax post to the forms submit event, it doesn´t submit the form or send the ajax request.

Do you want the form to be submited after 10 minutes? Should the user be able to check/uncheck the checkboxes during that time or should the (unchecked) checkboxes be selected and added to paramNames on document ready?

UPDATE

Created a live example;

HTML

<form id="myForm">
    1 <input type="checkbox" name="checkbox1" />
    2 <input type="checkbox" name="checkbox2" />
    3 <input type="checkbox" name="checkbox3" />
    <input type="submit" value="submit form" />
</form>

Javascript

$(document).ready(function() {

    console.log('document ready'); // DEBUG

    setTimeout(function() {

        console.log('setTimeout()'); // DEBUG
        submitForm();

    }, 1000 * 5); // 5 seconds

    $('#myForm').submit(function() {
        console.log('submit event'); // DEBUG
        submitForm();
    });

});

var submitForm = function() {

    console.log('submitForm()'); // DEBUG

    var $checkedInputElements = $('input[type="checkbox"]:checked');
    var paramNames = [];

    $checkedInputElements.each(function() {
        paramNames.push($(this).attr("name"));
    });

    console.log('paramNames =', paramNames); // DEBUG

    jQuery.ajax({
        type: 'POST',
        url: '/echo/json/',
        data: paramNames,
        complete: function(jqXHR, textStatus) {
            console.log('Done: ', textStatus); // DEBUG
            $('input[type="checkbox"]').attr('disabled', true);
        }
    });

    return true;
};

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 上传文件的大小(Size of uploaded file)
    问题 将文件上传到服务器时,Web浏览器是否在http标头中发送文件大小? 如果是这种情况,那么是否可以仅通过读取标题就拒绝文件,而不必等待整个上传过程完成? 回答1 http://www.faqs.org/rfcs/rfc1867.html 鼓励HTTP客户端为整个文件输入提供内容长度,以便繁忙的服务器可以检测所建议的文件数据是否太大而无法合理处理。 但是内容长度不是必需的,因此您不能依赖它。 而且,攻击者可能会伪造错误的内容长度。 读取文件内容是唯一可靠的方法。 话虽如此,如果content-lenght存在并且太大,则关闭连接将是一件合理的事情。 而且,内容是作为多部分发送的,因此大多数现代框架都首先对其进行解码。 这意味着在框架完成之前,您将不会获得文件字节流,这可能意味着“直到整个文件被上传”。 回答2 编辑:在进行深入分析之前,您可能需要检查其他答案,具体取决于apache配置:使用jQuery,在上传之前限制文件大小。 仅当您确实需要更多自定义反馈时,以下说明才有用。 是的,在允许上传整个文件之前,您可以先获取一些信息。 这是来自具有enctype="multipart/form-data"属性的表单的标头示例: POST / HTTP/1.1 Host: 127.0.0.1:8000 User-Agent: Mozilla/5.0 (Macintosh; U
  • jQuery-AJAX
    jQuery-AJAX jQuery库拥有完整的Ajax兼容套件。其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据。 jQuery.ajax() 执行异步HTTP(Ajax)请求。 jQuery.getJSON() 使用HTTP GET请求从服务器加载JSON编码数据。 jQuery.get() 使用HTTP GET请求从服务器加载数据。 jQuery.post() 使用HTTP POST请求从服务器加载数据。 .load() 从服务器加载数据,然后把返回到HTML放入匹配元素。 .serialize() 将表单内容序列化为字符串。 .serializeArray() 序列化表单元素,返回JSON数据结构数据。 $.ajax() ajax()方法通过HTTP请求加载远程数据。 该方法是jQuery底层AJAX实现。简单易用的高层实现见$.get,$post等。$.ajax()返回其创建的XMLHttpRequest对象。大多数情况下无需直接操作该函数,除非需要操作不常用的选项,以获得更多的灵活性。 $.ajax([settings]) settings 可选。用于配置Ajax请求的键值对 集合。 async 类型:Boolean,默认值:true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。 注意:同步请求将锁住浏览器
  • 如何在Python中为AJAX实现最小服务器?(How to implement a minimal server for AJAX in Python?)
    问题 我想为Python程序创建一个非常简单的基于HTML / AJAX的GUI。 因此,前端是一个HTML页面,可通过AJAX与程序进行通信。 您能否使用python SimpleHTTPServer.SimpleHTTPRequestHandler为服务器端提供最低限度的实现? 一个简单的示例是文本字段和按钮。 当按下按钮时,该字段的内容将发送到服务器,然后服务器将相应的答案发送回去。 我知道Python中有许多强大的解决方案,但是我想保持它非常简单。 我已经找到了此类服务器的一些很好的示例(例如,这里),但是到目前为止,我还无法提出一个真正最小的示例。 如果您想知道为什么我要以这种方式实现GUI:此应用程序的重点是在交互最少的情况下以美观的布局显示大量数据-因此使用HTML + CSS似乎最方便(而且我已经用于非交互式数据显示)。 回答1 好的,我想我现在可以回答我自己的问题。 这是用于在服务器上计算数字平方的示例实现。 如果有任何改进或误解,请告诉我。 python服务器文件: import threading import webbrowser import BaseHTTPServer import SimpleHTTPServer FILE = 'frontend.html' PORT = 8080 class TestHandler(SimpleHTTPServer
  • JQuery的AJAX方法
    jQuery 库拥有完整的 Ajax 兼容套件。其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据 $.ajax(): ajax() 方法通过 HTTP 请求加载远程数据。 该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。 settings [可选]用于配置 Ajax 请求的键值对集合。 async: 类型:Boolean, 默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。 注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 contentType: 类型:String,默认值: "application/x-www-form-urlencoded"。发送信息至服务器时内容编码类型。 默认值适合大多数情况。如果你明确地传递了一个 content-type 给 $.ajax() 那么它必定会发送给服务器(即使没有数据要发送)。 data: 类型:String,发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。 必须为 Key/Value 格式。如果为数组
  • 检测何时加载iframe(Detect when an iframe is loaded)
    问题 我在我的应用程序(带有ExtJS 4.2的单页应用程序)中使用<iframe> (我知道,我知道...)来进行文件下载,因为它们包含大量数据,并且可能需要一段时间才能生成Excel文件(根据参数,我们正在谈论20秒到20分钟之间的任何时间)。 事情的当前状态是:当用户单击下载按钮时,他被Javascript( window.location.href = xxx )“重定向”到执行导出的页面,但是由于它是用PHP完成的,因此没有发送标头,浏览器会持续加载页面,直到下载文件为止。 但这不是非常用户友好,因为没有任何东西可以告诉他它是否还在加载,完成(文件下载除外)或失败(这导致页面实际重定向,可能使他失去正在做的工作)。 因此,我创建了一个停靠在右下角的小非模式窗口,其中包含iframe和一则小消息以使用户放心。 我需要的是能够检测它的加载时间并能够区分两种情况: 无数据:确定=>关闭窗口文本数据:错误消息=>向用户显示消息+关闭窗口 但是,我尝试了所有4个事件(W3Schools的DOC)和没有被解雇过。 我至少可以理解,如果未返回HTML数据,则可能无法触发该事件,但是即使我强制执行错误以返回文本数据,也不会触发该事件。 如果有人知道解决方案,或者可能适合这里的替代系统,我将不知所措! 谢谢 ! 编辑:添加了iframe代码。
  • 生成供下载的文件时,如何显示加载动画?(How to display a loading animation while file is generated for download?)
    问题 我有一个Web应用程序,用户可以在其中生成PDF和PowerPoint文件。 这些文件可能需要一些时间才能生成,因此我希望能够在生成时显示加载动画。 这里的问题是我无意知道何时开始下载。 动画永远不会消失。 我知道有可能“在侧面”生成文件并在用户准备好使用AJAX下载文件时提醒用户,但是我更喜欢在用户等待下载开始时“锁定”用户。 回答1 要了解在这里需要做什么,让我们看看这种请求通常会发生什么。 用户单击按钮以请求文件。 该文件需要花费一些时间来生成(用户没有反馈)。 文件已完成并开始发送给用户。 我们想要添加的是让用户知道我们在做什么的反馈...在第1步和第2步之间,我们需要对点击做出反应,并且我们需要找到一种方法来检测何时发生了第3步,从而删除了视觉反馈。 我们不会将下载状态通知用户,他们的浏览器会像其他任何下载一样通知用户,我们只想告诉用户我们正在处理他们的请求。 为了使文件生成脚本与请求者页面的脚本进行通信,我们将使用Cookie,这将确保我们不依赖于事件,iframe等之类的浏览器。 在测试了多种解决方案之后,从IE7到最新的手机,这似乎是最稳定的。 步骤1.5:显示图形反馈。 我们将使用JavaScript在屏幕上显示通知。 我选择在整个页面上使用简单的透明黑色覆盖层,以防止用户与页面的其他元素进行交互,因为跟随链接可能会使他失去接收文件的可能性。 $('
  • 在 html 按钮上运行 PHP 函数单击(Run PHP function on html button click)
    问题 单击按钮时,我需要运行一些 PHP 函数。 我知道这不应该是 php 的用途,而是 js 应该这样做,但是我的函数在用户询问时从服务器收集数据时正在做什么。 具体来说,它获取一些用户数据并将其写入文件,由用户决定将收集哪些数据。 我怎样才能做到这一点? 我看到了在按钮单击上运行 PHP 文件的帖子,但我仍然不确定如何使用它。 我正在学习,所以请不要太苛刻 我试过onclick()和各种各样的东西,但它没有导致任何有用的东西 回答1 每当您通过 HTTP 请求访问它时都会运行一个 php 文件,无论是 GET、POST 还是 PUT。 您可以使用 JQuery/Ajax 在单击按钮时发送请求,甚至只需更改浏览器的 URL 以导航到 php 地址。 根据 POST/GET 中发送的数据,您可以让 switch 语句运行不同的函数。 通过 GET 指定函数 您可以使用此处的代码:如何从存储在变量中的字符串以及 switch 语句调用 PHP 函数,以根据发送的数据自动调用适当的函数。 所以在 PHP 方面,你可以有这样的东西: <?php //see http://php.net/manual/en/function.call-user-func-array.php how to use extensively if(isset($_GET['runFunction']) &&
  • jQuery Mobile:如何正确提交表单数据(jQuery Mobile: How to correctly submit form data)
    问题 这是一个jQuery Mobile问题,但它也与纯jQuery有关。 如何在不将页面转换到设置为表单操作属性的页面的情况下发布表单数据。 我正在构建phonegap应用程序,并且我不想直接访问服务器端页面。 我尝试了几个示例,但是每次表单都将我转发到目标php文件。 回答1 介绍 本示例是使用jQuery Mobile 1.2创建的。 如果您想查看最近的示例,请阅读本文或更复杂的文章。 您将找到两个详细解释的工作示例。 如果您还有其他问题,请在文章评论部分中提问。 表单提交是jQuery Mobile一直存在的问题。 有几种方法可以实现。 我将列出其中一些。 范例1: 如果您正在使用phonegap应用程序,并且不想直接访问服务器端php,这是最好的解决方案。 如果要创建phonegap iOS应用程序,这是正确的解决方案。 index.html <!DOCTYPE html> <html> <head> <title>jQM Complex Demo</title> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0"/> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2
  • 什么是Ajax+Ajax底层原理+如何使用原生JavaScript或JQuery发送Ajax请求
    1、什么是Ajax? Ajax(Asynchronous JavaScript and XML)并不是一种全新的技术,而是有JavaScript、XML、CSS等几种现有技术整合而成。它以异步的方式在客户端与服务器端之间传递数据,也是一种局部刷新技术。 2、原生JavaScript实现Ajax请求 1、认识XMLHttpRequest对象 方法名称说明open(String method,String url,boolean async,String user,String password)用于创建一个新的HTTP请求 参数method:设置HTTP的请求方法,对大小写不敏感 url:请求的URL地址async:可选,指定该请求是否为异步方法,默认为trueuser:可选,如果服务器需要验证,此处需要指定用户名;否则,会弹出验证窗口password:可选,验证信息中的密码,如果用户名为空,则此处将被忽略send(String data)发送请求到服务器端参数data:字符串类型,表示通过此请求发送的数据。此参数取决于open方法中的method参数。如果method参数为“POST”,可以指定该参数。如果为“GET”,该参数为nullabort()取消当前请求setRequestHander(String hander,String value
  • 使用AJAX直接发送html5文本区域而无需html(Use AJAX to send html5 textarea directly without html <form>)
    问题 最近,我对于是否可以直接发送输入/文本区域数据而不包含在html <form>感到困惑。 我想在网页上,如果我们想从用户那里获取信息,然后将文本发送到身份验证服务器,则无论使用哪种方式提交,都必须使用<form> 。 但是我的论文的一位匿名审稿人声称,可以使用html5标签“ textarea”和JS AJAX帖子来绕过<html> 。 虽然我做了很多尝试来实现他的方法的实验,但是都失败了。 我想知道是否真的有某种方法可以不使用<form>标记来提交用户信息? 谢谢 感谢大家的答复。 更新:我遵循“ the_void”的代码,并将AJAX的URL更改为ServerSocket(由Java实现)。 服务器能够获取POST事件,但无法读取AJAX的“数据”。 以下是html代码: 的HTML <!DOCTYPE html> <head> <meta charset="utf-8" /> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script> <script type="text/javascript"> $(document).ready(function() { $('#submit').click(function() { // information to be
  • $.ajax用法详解
    1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。 2.type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。 3.timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。 4.async: 要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。 5.cache: 要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false),设置为false将不会从浏览器缓存中加载请求信息。 6.data: 要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看  processData选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:[
  • 【面试题系列|前端面试题】前端高频面试题总结(2021年最新版)
    面试过不少前端从业者,简历写的平平淡淡,别人会的技能他也都会,看起来什么都掌握一些;有些会请过来当面聊一下,有些就直接拒绝了(如果是公司内要求独立完成项目的岗位,简历里放很多学习时候的DEMO项目,没有真实上线的项目,这种简历一般都会拒绝掉)。 当我们去一家公司面试,面试官有很大的主动权,面试官属于攻击方,求职者属于防守方,我们不可能什么方向都研究的非常深,所以扬长避短是最好的方式,推荐大家要做帐篷型的人,而不是水桶型的人;市场上岗位非常多,我们需要做的就是找到适合自己长处发展的那个职业! 面试的时候一定不要和面试官硬刚,可以适度的夸大自己,但是一定不要以为自己技术牛,就疯狂装B;面试官非常希望找到和自己脾气相投的人一起共事,哪怕你真的是万里挑一的大牛,面试官感觉和你一起共事非常不舒服,那么拒绝你也不是什么太难的决定。 如果遇到自己期望薪资内的offer,一定不要犹豫,直接答应下来,但是入职的时间,可以稍微向后推一下,可以一个礼拜后,十天后等,这段时间再继续面试,这时候薪资就一定要找高于自己答应offer的薪资,如果期间遇到自己更加满意的offer,就在自己答应的offer里找一家自己最感兴趣的入职。 目录 HTML 面试题 CSS 面试题 JavaScript 面试题 网络通信面试题 jQuery 面试题 Vue.js 面试题 React.js 面试题 工具面试题 算法面试题
  • java jstl 使用ajax填充表数据(java jstl populate table data using ajax)
    问题 我在 spring 框架中实现了一个 java ee webclient。 它从网络服务读取数据并以表格格式显示记录。 在这张表上,我可以通过选中复选框来删除多条记录。 当前我正在使用元刷新刷新表记录。 原因是因为 javascript 计时器刷新会将页面带到顶部。 它会影响用户查看记录时的体验。 当用户选择要删除的记录并点击删除时,会弹出一个javascript确认对话框。 使用元刷新的问题是当确认对话框弹出时我无法停止刷新。 我试过 jquery 但它没有用。 我正在考虑实现 ajax 来检索表的记录。 但我怎样才能有效地实施它。 表中的记录是动态的。 进一步补充,我有多个 html 表。 例如, #table 1 <table><tr><td></td>....</tr></table> #table 2 <table><tr><td></td>....</tr></table> #table 3 <table><tr><td></td>....</tr></table> 回答1 我建议您使用 JSP 作为模板。 这意味着 JSP 的主体包含静态元素,例如 HTML 代码、表单和表格,而您可以使用标签库来插入动态数据。 在您的情况下,来自数据库记录的数据。 <c:forEach items="${listOfRecords}" var="item"> <table>
  • 如果输入元素是数组,如何使用JQuery发送序列化表单数据(How to send serialize form data using JQuery if the input element is an array)
    问题 我的PHP代码中包含以下代码: while ($row = mysqli_fetch_assoc($result)) { extract($row); echo "<tr>"; echo "<td bgcolor='#FFFFFF'><input id='bookArray[]' name='bookArray[]' type='checkbox' value='$book_id' />$book_id</td>"; echo "<td bgcolor='#FFFFFF'>$threat_name</td>"; echo "</tr>"; } 在HTML页面中,我想使用jQuery serialize()方法在bookArray []中发送选定书籍的数组。 在我的JavaScript中, var selectedbooks = $("book_form").serialize(); alert (selectedbooks); 在警报消息框中,我没有得到任何值(空字符串)。 以前,当我使用Prototype时,效果很好。 回答1 简单: serialize().replace(/%5B%5D/g, '[]') 回答2 我想出了一种方法,当使用post发送数据时 另一方面,您可以使用$_['post']['name']访问元素 如果它是一个数组(例如,多选),那么在您的服务器上
  • jQuery.ajax()笔记
    Example: 加载并执行一个 JS 文件。$.ajax({ type: "GET", url: "test.js", dataType: "script" });Example: 保存数据到服务器,成功时显示信息。$.ajax({ type: "POST", url: "some.php", data: "name=John&location=Boston", success: function(msg){ alert( "Data Saved: " + msg ); } });Example: 装入一个 HTML 网页最新版本。$.ajax({ url: "test.html", cache: false, success: function(html){ $("#results").append(html); } });Example: 同步加载数据。发送请求时锁住浏览器。需要锁定用户交互操作时使用同步方式。var html = $.ajax({ url: "some.php", async: false }).responseText;Example: 发送 XML 数据至服务器。设置 processData 选项为 false,防止自动转换数据格式。var xmlDocument = [create xml document]; $.ajax({ url: "page
  • jQuery ajax函数中contentType和dataType之间的区别(Differences between contentType and dataType in jQuery ajax function)
    问题 我有以下Jquery回调函数,对此我有一点疑问(我不太了解Jquery): $("form.readXmlForm").submit(function() { // Riferimento all'elemento form che ha scatenato il submit var form = $(this); // Variabile che contiene il riferimento al bottone clickato var button = form.children(":first"); $.ajax({ // Viene eseguita la chiamata AJAX type: "POST", // Tipo di richiesta: POST // URL verso quale viene inviata la richiesta url: form.attr("action"), // Dati XML inviati: data: "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><javaBean><foo>bar</foo><fruit>apple</fruit></javaBean>", // Tipo di media type accettabile
  • jQuery AJAX表单提交两次(jQuery AJAX form submits twice)
    问题 我有一个要通过jQuery捕获并通过AJAX发送的表单。 我的问题是,每次刷新页面时,表单都会提交多次。 我尝试取消绑定“提交”按钮,但通常在第一次提交后将表单发布。 任何帮助,将不胜感激 $('#exportForm').submit(function() { $.ajax({ type: "POST", url: $(this).attr('action'), data: $(this).serialize(), success: function(response) { $('#exportForm').unbind('submit'); console.log(response); } }); return false; }); 回答1 您最有可能正在使用button或submit来触发ajax事件。 尝试这个: $('#exportForm').submit(function(e){ e.preventDefault(); $.ajax({ type: "POST", url: $(this).attr( 'action' ), data: $(this).serialize(), success: function( response ) { console.log( response ); } }); return false; }); 回答2
  • 如何 ? 表单过帐到多个位置(How To ? Form Post to Multiple Locations)
    问题 我有一个表单,需要将其发布到多个脚本。 我该怎么做最简单的方法? 我知道可以用Javascript,Curl或Snoopy类完成此操作,但实际上这是最简单,最好的方法。 其中一个脚本发送电子邮件,它是一个php文件,另一个则托管在其他位置。 需要在两个脚本上收集数据。 回答1 最好的方法是先将表单提交到本地脚本,然后使用CURL将接收到的(过滤后的)数据发布到远程脚本中。 然后,只需注意响应即可。 然后,只需发送电子邮件并处理本地脚本中来自远程脚本的响应即可。 回答2 最简单的方法是使用jQuery向每个脚本发送$ .ajax(或$ .post或$ .get),从每个脚本中检索结果,然后对结果进行处理。 $(document).ready( function(){ $('#mySubmitButton').click(function(){ //Send data to the email script $.post( 'send-email.php', $('form').serialize(), function(data, textStatus) { //data is the result from the script alert(data); }); //Send data to the other script $.post( 'my-other-script
  • 传入的Django请求中的JSON数据在哪里?(Where's my JSON data in my incoming Django request?)
    问题 我正在尝试使用Django / Python处理传入的JSON / Ajax请求。 request.is_ajax()在请求上为True ,但是我不知道有效负载在JSON数据中的位置。 request.POST.dir包含以下内容: ['__class__', '__cmp__', '__contains__', '__copy__', '__deepcopy__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__str__', '__weakref__', '_assert_mutable', '_encoding', '_get_encoding', '_mutable', '_set_encoding', 'appendlist',
  • jQuery:如何停止转义用于POST数据的JSON字符串的AJAX函数(jQuery: How to stop AJAX function escaping JSON string used to POST data)
    问题 我需要将所有输入从表单序列化为JSON字符串。 借助本文,我可以成功创建一个有效的字符串,如下所示: {"input01":"value01","input02":"value02","input03":"value03"} 但是,当我尝试使用字符串通过jQuery的Ajax函数发布数据时,似乎在字符串中添加了反斜杠,从而导致使用GET而不是POST发送JSON字符串。 加载的PHP页面返回一个$_GET数组,该数组包含: [{\"input01\":\"value01\",\"input02\":\"value02\",\"input03\":\"value03\"}] => 我已经使用alert()测试了JSON字符串,以确认结构正确无误,然后再用于AJAX函数。 另外,如果我只是手动输入有效的JSON字符串,则AJAX会正确发布数据。 我的代码如下: var dataJSON = $.toJSON($('#form').serializeObject()); alert(dataJSON); $.ajax({ type: "POST", url: "ajax.php", data: 'Query01=01&Query02=02', dataType: 'json', success: function(data){ if (data==1){ $('#wrap')