$ .ajax错过了发布到php

时间:2016-08-29 15:27:42

标签: javascript php jquery ajax httprequest

我有一个问题,我的一些数据没有通过PHP。我认为问题在于ajax发送它。我发送了大约10个属性,其中一些是字符串,一些是整数。这只是我所做的简化示例。我认为,它错过的几个值是整数。有些值来自cordova.Localstorage storage.getItem("itemkeyname");连接没有问题,因为我至少得到错误消息说"缺少数据"等等.. 我已经尝试过PHP的isset()而不是empty(),它没有改变任何东西。 var_dump()返回发送属性的数组,但很少有最后一个属性被截断或丢失。

//when submitbtn is pressed
$("#submitbtn").click(function () {

    // First I get data from input elements from page
    $name = $("#name").val();
    $name2 = $("#name2").val();

    //debug to see $name's value
    alert("name: " + $name + ", name2: " + $name2);

    // then I check it's not empty/null
    if ($name && $name2) {
        //then call ajax and send data to server
        $.ajax({
            url: "http://localhost:1234/phpfile.php",
            type: "POST",
            data: {
                name: $name,
                name2: $name2
            },
            dataType: "text",
            success: function (response) {
                alert(response);
            },
            error: function (err) {
                $output = JSON.stringify(err);
                alert($output);
            }
        });
    }
});

在服务器端phpfile.php

<?php header('Content-Type: text/html; charset=utf-8');
//store missing data on array
$data_missing = array();

if(empty($_POST['name'])) {
    $data_missing[] = "name";
} else {
    $name = trim($_POST['name']);
}

if(empty($_POST['name2'])) {
    $data_missing[] = "name2";
} else {
    $name2 = trim($_POST['name2']);
}

//check there's no data missing
if(empty($data_missing)) {

    //do stuff

} else {
    echo 'missing data: ';
    foreach($data_missing as $missing) {
        echo '$missing , ';
    } 
}
?>

1 个答案:

答案 0 :(得分:0)

  1. echo&#39; $ missing,&#39;胜利的工作应该是回声&#34; $ missing,&#34;
  2. 在您的JS代码中,dataType被定义为&#34; text&#34; (普通),而PHP将其响应定义为text / html。
  3. 尝试将输入值检查为:

    if(!isset($ _ POST [&#34; name&#34;])|| strlen(trim($ _ POST [&#34; name&#34;]))== 0){     $ data_missing [] =&#34; name&#34 ;; }