Heim >Backend-Entwicklung >PHP-Tutorial >请问ajax post表单,php怎么接收?

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

WBOY
WBOYOriginal
2016-06-23 13:59:331031Durchsuche

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"就好了

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn