AJAX请求返回空数据集

时间:2014-07-13 22:24:15

标签: php jquery ajax

我正在对我本地域的php文件进行AJAX调用。我遇到了一个问题,因为它没有在请求中返回成功函数的任何数据。

我正在序列化一个表单来发布数据以进入数据库。我可以正常工作,并且正在写入数据库。

问题是当我尝试将echoed语句显示在success函数的数据部分时。

我使用了警报,但它没有提醒任何事情。我试过一个console.log,只显示:

(an empty data string)

在我从mysql_函数切换到PDO函数之前,我已经完成了它。现在它还没有回归任何东西。我看了看this link in particular并且它仍然没有工作。

这就是我在ajax post请求中所拥有的:

var formstuff = $('#person-data').serialize();
$.ajax(
{
    url: 'insert.php',
    type: "POST",
    dataType: 'text',
    data: formstuff,
    success: 
    function(data)
    {
        console.log(data);
        alert(data);
        $('#info').hide();
        $('#info').html('');
        $('#info').append(data);
        $('#info').fadeIn(1500);
        $("#person-data")[0].reset();
        $('#username').css({'border': '1px solid #000', 'background-color': '#FFF', 'color': '#000'});
        $('#username').css('background-image', 'url(images/txtbox/id.png)');
    }
});

我已经检查了控制台中发布的标题,并且正在将输入的内容发布到表单字段中。

这是我想要回到成功函数的回声:

echo 'ID: '.$idp.' Lastname: '.$ln.' First Name: '.$fn.' added to the database';

这只是没有返回到成功函数。我试过这个没有使用try ... catch。我把它放在了试试中,没有任何东西。捕获错误将按原样发送回函数。

我尝试在尝试之前回应一些东西,然后在catch之前回显,并且在try之前将echo输出到success函数,而不是我需要的数据。

我还尝试过if语句,看看它是否有用,并且它不会显示任何内容。

我很难过,只是想知道是否有一些我能得到的指示。

TIA

修改

PDO信息:

try
{
    $sqlp = $conn->prepare("INSERT INTO ".PERSON." (lastname, firstname, dob, adbkid) VALUES(:ln, :fn, :dob, :unp)");
    $sqla = $conn->prepare("INSERT INTO ".ADDRESS." (address1, address2, town, county, postcode, country, lat, lng, personID) VALUES (:a1, :a2, :town, :county, :pc, :country, :lat, :lng, :una)");
    $sqlc = $conn->prepare("INSERT INTO ".CONTACT." (landline, mobile, email1, email2, personID) VALUES (:lp, :mp, :e1, :e2, :unc)");
    $sqlm = $conn->prepare("INSERT INTO ".MISC." (web, notes, photo, fbid, twitter, cat, personID) VALUES (:web, :notes, :pic, :fb, :tw, :cat, :unm)");
    $sqlv = $conn->prepare("INSERT INTO ".VARI." (Time, Date, ipaddress, browser, os, personID) VALUES (:it, :idate, :iip, :ib, :ios, :unv)");

    $sqlp->bindValue(':ln', $ln);
    $sqlp->bindValue(':fn', $fn);
    $sqlp->bindValue(':dob', $dob);
    $sqlp->bindValue(':unp', $un);

    $sqla->bindValue(':a1', $a1);
    $sqla->bindValue(':a2', $a2);
    $sqla->bindValue(':town', $town);
    $sqla->bindValue(':county', $county);
    $sqla->bindValue(':pc', $pc);
    $sqla->bindValue(':country', $country);
    $sqla->bindValue(':lat', $lat);
    $sqla->bindValue(':lng', $lng);
    $sqla->bindValue(':una', $un);

    $sqlc->bindValue(':lp', $lp);
    $sqlc->bindValue(':mp', $mp);
    $sqlc->bindValue(':e1', $e1);
    $sqlc->bindValue(':e2', $e2);
    $sqlc->bindValue(':unc', $un);

    $sqlm->bindValue(':web', $web);
    $sqlm->bindValue(':notes', $notes);
    $sqlm->bindValue(':pic', $pic);
    $sqlm->bindValue(':fb', $fb);
    $sqlm->bindValue(':tw', $tw);
    $sqlm->bindValue(':cat', $cat);
    $sqlm->bindValue(':unm', $un);

    $sqlv->bindValue(':it', $it);
    $sqlv->bindValue(':idate', $idate);
    $sqlv->bindValue(':iip', $iip);
    $sqlv->bindValue(':ib', $ib);
    $sqlv->bindValue(':ios', $ios);
    $sqlv->bindValue(':unv', $un);

    $sqlp->execute();
    $sqla->execute();
    $sqlc->execute();
    $sqlm->execute();
    $sqlv->execute();

    $idp = $sqlp->lastInsertId();
    $ida = $sqla->lastInsertId();
    $idc = $sqlc->lastInsertId();
    $idm = $sqlm->lastInsertId();
    $idv = $sqlv->lastInsertId();

    echo $idp.' '.$ln.' '.$fn.' added';
}
catch (PDOException $e)
{
    print '<div class="sqlerror">'.$e->getMessage().'</div>';
}

这是返回的内容,使用mysql

在文件中显示响应

Response from mysql

这是使用PDO时返回的内容 - 没有数据也没有响应 Response from PDO

1 个答案:

答案 0 :(得分:1)

函数lastInsertId()是一个适用于PDO对象的方法,您可以尝试在PDOStatement对象上调用它,试试这个:

$sqlp->execute();
$idp = $conn->lastInsertId();
$sqla->execute();
$ida = $conn->lastInsertId();
$sqlc->execute();
$idc = $conn->lastInsertId();
$sqlm->execute();
$idm = $conn->lastInsertId();
$sqlv->execute();
$idv = $conn->lastInsertId();

而不是

$sqlp->execute();
$sqla->execute();
$sqlc->execute();
$sqlm->execute();
$sqlv->execute();

$idp = $sqlp->lastInsertId();
$ida = $sqla->lastInsertId();
$idc = $sqlc->lastInsertId();
$idm = $sqlm->lastInsertId();
$idv = $sqlv->lastInsertId();