【问题标题】:Jquery POST, submitting a form while posting the dataJquery POST,在发布数据时提交表单
【发布时间】:2014-01-13 01:40:50
【问题描述】:

我使用教程来构建我的发送按钮。我有两种表格,根据选择的表格,需要在“发送”时提交不同的表格,但是这个脚本除了搞砸我的邮件之外什么也没做。有人可以帮我解决这个问题并向我解释发生了什么吗?表单看起来与您想象的完全一样,但是我取出了表单的方法和操作属性,因为我认为它们将在下面的脚本中处理。

  "Send": (function() { 

            if(submitbutton == 1){
                var dataString = 'name:'+ name + '</br>email:' + email + '</br>phone:' + phone;  
                //alert (dataString);return false;  
                $.ajax({  
                     var name = $("input#name").val();  
                     var phone = $("input#phone").val();  
                     var email = $("input#email").val();  
                  type: "POST",  
                  url: "mailer.php",  
                  data: dataString,  
                  success: function() {  
                    $( this ).dialog( "close" );
                  }  
                });  
                return false;  

            }

            else if(submitbutton == 2){
                var dataString = 'name:'+ name + '</br>email:' + email + '</br>phone:' + phone;  
                //alert (dataString);return false;  
                $.ajax({  
                     var name = $("input#name2").val();  
                     var phone = $("input#phone2").val();  
                     var email = $("input#email2").val();  
                  type: "POST",  
                  url: "mailer2.php",  
                  data: dataString,  
                  success: function() {  
                    $( this ).dialog( "close" );
                  }  
                });
                return false;  
            }
            else if(submitbutton == 0){ 
                $("#error").css("display", "");
            }

        }),

【问题讨论】:

  • mess up my mailer 是什么意思?需要更具体地说明您的问题是什么。 submitbutton 在哪里定义?
  • 它是在脚本前面定义的,我不想用我的所有代码压倒任何人。在“发送”时,会从我的 mailer.php 发送一封带有 html 的电子邮件,但所有值都是空白的,这意味着这些值不能正确发布。另外,发送后对话框不会关闭,让我相信我的 ajax 语法有问题
  • 对话框关闭是由于this 的上下文在$.ajax 中丢失。将 this 元素定义为 ajax 之外的变量至于数据,检查在控制台网络选项卡中发出的请求以查看发送的内容,并检查是否抛出错误
  • 对话框关闭现在完美运行,谢谢!但我不明白你在说什么数据。我对此有点陌生。另外,我没有办法将我的数据字符串定义为表单中的所有输入吗?为什么我必须用 html+jquery 设置我的数据字符串,如果数据字符串中的信息被发送到我的 mailer.php 为什么需要 html?它不会把事情搞砸吗?如果我有一个带有提交按钮和操作/方法的简单 html 表单,我是否需要对我的 mailer.php 做任何特别的事情?
  • 你有 2 个脚本在玩......浏览器 javascript 和服务器 php。需要缩小问题所在。在浏览器控制台中可以检查请求本身并查看发送/接收的所有数据、状态、标头等。点击 F12..Chrome 内置开发工具和 Firebug for Firefox 是最常见的调试控制台

标签: jquery ajax forms submit send


【解决方案1】:

javascript 中一个值得注意的问题是您在定义 dataString 之前定义它包含的变量,例如 email。

另外,dataString 不是有效的表单编码。编译后它应该看起来像'email=foo@foo.com&amp;name=foo'。里面不能有html

将对象传递给$.ajax 的data 并让jQuery 为您编译或使用$('#formId').serialize() 将所有数据收集到一个完整的表单中会更简单

试试这个:

var data = {
    name: $("input#name").val(),
    email: $("input#email").val(),
    phone: $("input#phone").val()
}
var $dialog=$(this)
$.ajax({
    type: "POST",
    url: "mailer.php",
    data: data,
    success: function () {
        $dialog.dialog("close");
    }
});

【讨论】:

  • 非常感谢您的时间和知识。我拥有你一个!
猜你喜欢
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 2010-09-23
  • 2019-01-19
  • 2013-12-01
  • 1970-01-01
相关资源
最近更新 更多