我的文件中有一个简单的js脚本,名为index.php。
$.ajax({
type: "POST",
data: 'a='+hi+'&b='+hello,
url: "update.php",
cache: false,
success: function() {
console.log('Ajax success');
},
error: function() {
console.error('Ajax error');
},
complete: function() {
console.log('Ajax complete');
}
});在我的控制台中,我有两条信息:成功和完成。
2 vars a和b包含一些东西。我想将这些数据发送到一个名为update.php的文件中,其中包含:
$a = @$_POST['hi'];
$b = @$_POST['hello'];在我的update.php文件中,如果我做了一个echo $a;,它就不起作用了(什么都没有出现)。如果我做了一个var_dump($_POST);,它会返回:
array (size=0)
empty这两个文件在我的with服务器上工作很好,但是在我的本地工作流中没有任何工作。
我不确定我的$a = @$_POST['hi'];。我试着使用$a = $_POST['hi'];,但是它返回:Undefined index: hi (“hello”也是一样的)。
这意味着$a和$b为NULL,但是在我的index.php文件中,2 vars包含了我的内容。
知道怎么解决这个问题吗?提前结束。
发布于 2014-05-30 22:40:37
@会消除错误。但这并不能神奇地发挥作用。您仍然会得到“未定义的索引”错误,但它不再显示。
我认为问题在于你传递数据的方式。尝试将其作为对象传递:
$.ajax({
type: "POST",
data: {
a: hi, /* 'a' is the key, 'hi' is the value. */
b: hello },
url: "update.php",
cache: false,
success: function() {
console.log('Ajax success');
},
error: function() {
console.error('Ajax error');
},
complete: function() {
console.log('Ajax complete');
}
});除了在PHP中使用var_dump($_POST);转储发布信息的全部内容之外,您还可以使用浏览器中的开发人员工具(通常在F12下)检查发布的请求。
如果您使用这些调试工具,那么您可能会注意到,在读取键'hi‘和'hello’时,您可能会发布'a‘和'b’键,这可能是您出错的原因。
Barmar的评论是正确的,您的方法也应该工作得很好,尽管对象表示法更方便,因为它将为您转义特殊字符,我认为它的可读性更强。
发布于 2014-05-30 22:54:07
*不要在开发中使用@。
我使用JSON类型为您提供了一个工作示例:
HTML (Index.php):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>new</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#click').bind('click', test);
});
function test(){
var hi = 'hi';
var hello = 'hello';
var dataString = 'a='+ hi + '&b='+ hello;
$.ajax({
url: "update.php",
type: "POST",
data: dataString,
dataType:'json',
cache: false,
success: function(data)
{
$('div').html(data.succ+' ,a = '+data.a + ', B = ' + data.b+ ' , '+data.time);
}
});
return false;
}
</script>
</head>
<body>
<input type="submit" id="click" value="Click">
<div></div>
</body >
</html>update.php:
<?php
$a = $_POST['a'];
$b = $_POST['b'];
$return = array('succ' => 'true','a' => $a,'b' => $b,'time' => time());
header('content-type: application/json; charset=utf-8');
echo json_encode($return);
?>如您所见,我将把a&b发布到update.php文件中,并将结果返回给index.php。
完美的工作。
编辑:
我还测试了您给出的当前代码,它也在工作:

您可以在网络选项卡上看到响应A和B。
我刚在update.php更改为:
<?php
$a = $_POST['a'];
$b = $_POST['b'];
echo 'a='.$a;
echo ',';
echo 'b='.$b;
?>https://stackoverflow.com/questions/23964336
复制相似问题