栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

$ _POST无法以ajax格式提交吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

$ _POST无法以ajax格式提交吗?

您的代码几乎没有问题,例如:

  • …它只会得到未定义的索引:sessions.php中的用户名

问题是由于以下两行,

    contentType : false,processdata: false,

从文档中,

的contentType (默认值:

'application/x-www-form-urlenpred; charset=UTF-8'

类型:
Boolean
或者
String

当发送数据到服务器时,使用该内容类型。默认值为“ application / x-www-form-urlenpred; charset =
UTF-8”,在大多数情况下都可以。如果您将内容类型显式传递给
$.ajax()
,则该内容类型将始终发送到服务器(即使没有发送数据)。从jQuery
1.6开始,您可以通过
false
告诉jQuery不要设置任何内容类型标头。


过程数据 (默认值:

true

类型:
Boolean

默认情况下,数据到数据选项传递作为一个对象(在技术上,不是字符串其它任何东西)将被处理并转换成一个查询字符串,以适应默认 内容类型“应用程序/ x
-www-form-urlenpred”
。如果要发送DOMdocument或其他未处理的数据,请将此选项设置为
false

Hence,

$_POST
array would be empty in sessions.php page if you set
contentType
and
processData
to
false
, and that’s why you’re getting this
undefined index: username error. But having said that, since you’re sending
a file with your AJAX request, it’s okay to set these settings as
false
,
which is further explained in the following point.

  • .serialize()
    方法创建通过串行化形式的控制值,如一个URL编码的文本串
    <input>
    <textarea>
    <select>
    。但是,序列化表单时它不包含文件输入字段,因此您的远程AJAX处理程序将根本不会收到文件。因此,如果要通过AJAX上传文件,请使用FormData对象。但是请记住,旧的浏览器不支持FormData对象。FormData支持从以下桌面浏览器版本开始:IE 10 +,Firefox 4.0 +,Chrome 7 +,Safari 5 +,Opera 12+。

  • 由于您期望服务器提供json对象,因此请将此设置添加

    dataType:'json'
    到您的AJAX请求中。
    dataType
    是您期望从服务器返回的数据类型。

所以解决方案是这样的:

保持 HTML 表单不变,并通过以下方式更改 jQuery / AJAX 脚本,

$('#/confirm/i').click(function(e){    e.preventDefault();    var formData = new FormData($('form')[0]);    $.ajax({        type: 'POST',        url : 'sessions.php',        data: formData,        dataType: 'json',        contentType: false,        processdata: false,         success: function(d){ console.log(d.message);        }    });});

然后在 sessions.php 页面上,像这样处理表单:

<?php    $exist = "david";    if(isset($_POST['username']) && !empty($_POST['username']) && isset($_POST['pass']) && !empty($_POST['pass'])){        if($_POST['username'] == $exist){ echo json_enpre(array("message" => "Already exist"));        }else{ echo json_enpre(array("message" => "You can succesfully add")); // get username and password $username = $_POST['username']; $password = $_POST['pass']; // process file input // Check whether user has uploaded any file or not if(is_uploaded_file($_FILES['fileupload']['tmp_name'])){     // user has uploaded a file }else{     // no file has been uploaded }        }    }else{        echo json_enpre(array("message" => "Invalid form inputs"));    }?>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392359.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号