Ajax / PDO返回lastInsertId不起作用

时间:2014-02-27 17:16:05

标签: php ajax pdo

我想在成功事件中使用lastInsertId。请求工作正常我可以插入一个新元素,但没有任何返回。

function.js

function add_elem(i)
{
var mydata ="e1="+0+"&e2="+0+"&e3="+100+"&e4="+100+"&e5="+i+"&addelem=1";
$.ajax({
    url:"edit.php",
    type:'POST',
    data: mydata,
    success: function(f) {
        alert(f);
    },
    error: function() {
        alert('error try again');
    }
});

edit.php

<?php include"inc/config.php"; 
$positionx=$_POST['e1'];
$positiony=$_POST['e2'];
$lar=$_POST['e3'];
$haut=$_POST['e4'];
$typ=$_POST['e5'];
if(isset($_POST['addelem']))
{
    $req_add=$bdd->prepare('insert into elem (element_position_x,element_position_y,element_width,element_height,element_type)
                            values(:posx,:posy,:width,:height,:type)');
    $req_add->execute(array(
        'posx' =>$positionx,
        'posy' =>$positiony,
        'width' =>$lar,
        'height' =>$haut,
        'type' =>$typ
        )
    );
return $bdd->lastInsertId();
} ?>

我错过了什么吗?

编辑:

通过改变解决: return $bdd->lastInsertId(); 至 : echo $bdd->lastInsertId(); 感谢Michael Berkowski。

2 个答案:

答案 0 :(得分:-1)

如果你得到的结果是:

$bdd->lastInsertId();

尝试在ajax请求中使用dataType param(dataType:“JSON”)

 $.ajax({
     url:"edit.php",
     type:'POST',
     dataType: "json"
     data: mydata,
     success: function(f) {
         alert(f);
     },
     error: function() {
         alert('error try again');
     }

在服务器端获得结果时,您应该编码为json并向后回显到浏览器。例如:

  $req_add->execute(array(
       'posx' =>$positionx,
       'posy' =>$positiony,
       'width' =>$lar,
       'height' =>$haut,
       'type' =>$typ
    ));
  $result = $bdd->lastInsertId();
  echo json_encode($result);

答案 1 :(得分:-1)

服务器端,您可以使用JSON格式化请求的输出:

$req_add->execute(array(
   'posx' =>$positionx,
   'posy' =>$positiony,
   'width' =>$lar,
   'height' =>$haut,
   'type' =>$typ
));
$result = array('id'=>$bdd->lastInsertId());

header('Cache-Control: no-cache, must-revalidate');
header('Content-type: application/json');

echo json_encode($result);
exit;

在客户端,您可以使用jquery ajax中的dataContent属性来处理结果:

$.ajax({
    url:"edit.php",
    type:'POST',
    dataType: "json"
    data: mydata,
    success: function(data,txt,xhr) {
        var myNewId = data.id;
    },
    error: function() {
        alert('error try again');
    }