Home > Backend Development > PHP Tutorial > 请问ajax post表单,php怎么接收?

请问ajax post表单,php怎么接收?

WBOY
Release: 2016-06-23 13:59:33
Original
1040 people have browsed it

a.html
var params=$("#form1").serialize();
$.ajax({
    type: "post",
contentType: "application/text",
data:params,
dataType:"json",
//dataType: "binary",
        async: false,
timeout: 30000,
        url: '1.php',
        success: function(data){
                //处理data数据
var s = eval(data);
     alert(s.a+'  '+s.b);
        },
error: function(x, e) {
                   // alert(x.readyState);
alert(e);
                }
});
-------------------------------
1.php
$db = new mysqli('localhost','adb','winst','test');
mysqli_query($db, "set character set 'utf8'");
$arr = $_REQUEST;  
$vnameid =$arr['username'];
$vtele =$arr['telephone'];
$query = "INSERT INTO cardvip(namevip,tel) VALUES ('"+$vnameid+"','"+$vtele+"')";
$db->query($query);

$data = json_encode(array('a'=>$vnameid, 'b'=>$vtele)); 
echo $data;
?>

如果用$vnameid ='username';
$vtele ='telephone';
1.html alert(s.a+'  '+s.b);可正确显示。

就是接收不到post数据


回复讨论(解决方案)

注释掉 dataType:"json"
alert(s.a+'  '+s.b); 改成 alert(data);

1.php
print_r($_POST);
exit;

用此改动进行调试

注释掉 dataType:"json"
alert(s.a+'  '+s.b); 改成 alert(data);

1.php
print_r($_POST);
exit;

用此改动进行调试

返回数据没问题,
$arr = $_REQUEST;  
$vnameid =$arr['username'];
$vtele =$arr['telephone'];
我的意思是$vnameid 获得不到post数据

$vnameid =$arr['username'];取不到值?

$vnameid =$arr['username'];取不到值?
嗯,取不到值。
如果a.html中使用url: '1.php?'+params,
就可以取到值,这是怎么回事?

你的ajax参数dataType:"json",传递的却是serialize序列化的数据。
所以应该去掉dataType:"json"。

你按我说的做了吗?

你按我说的做了吗?

a.html
var params=$("#form1").serialize();
$.ajax({
    type: "post",
contentType: "application/text",
data:params,
        async: false,
timeout: 30000,
        url: '1.php',
        success: function(data){
                //处理data数据
alert(data);
        },
error: function(x, e) {
                   // alert(x.readyState);
alert(e);
                }
});
-----------------------------------
1.php
$arr = $_REQUEST;  
$vnameid =$arr['username'];
$vtele =$arr['telephone'];
echo $vnameid;
?>

还是获取不到post值

contentType: "application/text",
这个去掉吧。有这个MIME ?

删去 contentType: "application/text",

ok,去掉contentType: "application/text"就好了

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template