我想用这样的方式通过AJAX发送我的php变量和输入文件。
$(document).ready(function(){
$("#submit").click(function(){
//var formData = new FormData($('form#data')[0]);
var chaID = "<?php echo $chaID; ?>";
var row_number = "<?php echo $row_number; ?>";
var tag = "<?php echo $tag; ?>";
var data = '&chaID=' + chaID + '&row_number=' + row_number + '&tag=' + tag;
//Returns successful data submission message when the entered information is stored in database.
$.ajax({
type: "POST",
url: "ajax_challenge.php",
data : data,
cache: false,
success: function(result){
$('#level').modal('show');
},
contentType: false,
processData: false
});
return false;
});
});我的formData运行得很好,所以让我们关注一下var data。当我运行这个函数时,ajax_challenge.php响应“未定义索引”,但在请求部分,它显示了&chaID=7&row_number=2&tag=6,因此它应该可以工作。
也许我对php做错了什么?
$chaID = $_POST['chaID'];
$row_number = $_POST['row_number'];
$tag = $_POST['tag'];另外,是否可以正确地混合formData +数据?
编辑。浏览器控制台的截图
反应截图
请求
EDIT2
问题是,如果我把
contentType: false,
processData: false但问题是,如果我删除它也不能传递var formData输入:文件通过网址。我该怎么办?
发布于 2016-02-25 16:20:01
我想我明白了,你把GET参数错误地传递给了数据变量。
根据我对jQuery附加如何获取参数的理解,修复将是
'?chaID=' + chaID + '&row_number=' + row_number + '&tag=' + tag如果这不能解决这个问题,请尝试检查控制台中的错误或尝试console.log值。另外,在将值放入URL之前,请确保您是encodeURI值。
另外,更好的做法是使用GET值创建一个数组,然后将它们传递给jQuery.ajax()函数的数据变量,因为它自动为您进行字符串转换,尝试这样做,它可能只是解决了问题。;)
您可以在这里找到jQuery和EncodeURI的AJAX函数的文档:http://api.jquery.com/jquery.ajax/
encodeURI.asp
编辑:我注意到您正在使用POST方法,在这种情况下,然后将POST值数组传递给数据参数,它应该可以工作。但是,只包括变量值。示例数组:
data = [chaID, row_number, tag];将一个数组传递给数据参数,它应该会很好地发布值。另外,尝试在你的问题中包括控制台网络选项卡的屏幕截图,它告诉我们是否出了问题。也是控制台截图。
EDIT2:好的,下面是我的观察: ProcessData将处理对象,因此formData不能工作是有意义的。试着追加另一个数组:
data = [chaID, row_number, tag];
for (var i = 0; i < formData.length; i++) {
data.append('formData[]', formData[i]);
}EDIT3:这应该可以用。只需用以下方式修改PHP和JS:
var data = formData;
var params = $.param({"chaID": chaID, "row_number": row_number, "tag": tag});
//Returns successful data submission message when the entered information is stored in database.
$.ajax({
type: "POST",
url: "ajax_challenge.php?" + params,
data : data ,和PHP:
$chaID = $_GET['chaID'];
$row_number = $_GET['row_number'];
$tag = $_GET['tag'];发布于 2016-02-25 16:23:58
因为您将php变量放入脚本中。和php首先编译您的代码--您的javascript运行:
var chaID = "<?php echo $chaID; ?>";
var row_number = "<?php echo $row_number; ?>";
var tag = "<?php echo $tag; ?>";
var data = '&chaID=' + chaID + '&row_number=' + row_number + '&tag=' + tag;因此,您还没有单击、$_POST‘’chaID‘和另一个$_POST变量没有定义。
发布于 2016-02-25 16:55:55
如果在ajax中使用$_POST方法,则不需要使用&启动param数据。
var data = '&chaID=' + chaID + '&row_number=' + row_number + '&tag=' + tag;替换为:
var data = 'chaID=' + chaID + '&row_number=' + row_number + '&tag=' + tag;还检查php中的值,您通过使用print_r($_POST);得到了什么?
https://stackoverflow.com/questions/35632588
复制相似问题