无法从AJAX返回数据,不会触发任何承诺

时间:2016-08-15 01:34:12

标签: javascript php jquery ajax post

我尝试使用jQuery $ .ajax函数将一些数据发布到PHP文件,并返回响应。我过去做过类似的事情,所以我不确定我在哪里滑倒。

我已经连接DONE,FAIL,THEN,并且总是承诺$ .ajax函数,每个函数都有警报,并且没有警报被触发。这是相关的JavaScript。

$.ajax({
        url: "processingForm.php",
        dataType: "json",
        type: "POST",
        data: { theFullData: JSON.stringify(postData) },
    success: function (obj, textstatus) {
        alert("Woo");
    },
    error: function (err) {
        alert("Error");
    }
    })
   .done(function (res) {
       alert(res);
   })
   .fail(function (res) {
       alert("fail");
   })
   .then(function (res) {
        alert("then");
   })
   .always(function () {
        alert("complete");
   });

在我的PHP文件中,解析了JSON数据,最终将一个字符串插入到数据库中。大约75%的时间将字符串正确写入数据库。我从来没有看到任何写入LOG表的内容,所以这可能是另一篇文章的问题。

    $outp = array();
        $sql = (string)('INSERT INTO PBP_O (POST_DATA) values ("' . $str . '")');
        mysqli_query($conn, $sql);


        //ERROR Logging
        $err = mysqli_error($conn);

$sql = (string)('INSERT INTO LOG (ERROR) values ("Hi")');
mysqli_query($conn, $sql);


        if($err != ""){
            mysqli_close($conn);

            echo "Sorry";
        }
        else{

$sql = (string)('INSERT INTO LOG (ERROR) values ("Way down here")');
mysqli_query($conn, $sql);

            $result = mysqli_query($conn, "SELECT LAST_INSERT_ID() LID");

            if (mysqli_num_rows($result) > 0) {
                while($row = mysqli_fetch_assoc($result)) {
                    $outp["LID"] = $row["LID"];
                }
            } else {
                echo "Sorry";
            }
        }

$sql = (string)('INSERT INTO LOG (ERROR) values ("'.$outp["LID"].'")');
mysqli_query($conn, $sql);

        mysqli_close($conn);
        echo json_encode($outp);

如果有人知道我做错了什么,我会非常感激。如果代码的任何其他部分有助于查看,请告知我们。我已经验证了发送的JSON已经有效。

修改
$ .post()可能会为我做任何事情,我现在的AJAX不会吗?我不明白为什么会这样,但我再也看不到代码中的错误。



编辑2

我已将我的PHP代码更新为现在的版本(编辑后的部分位于最左侧)。我还在AJAX中添加了SUCCESS和ERROR回调。基本上我只是使用我的LOG表来确保我应该在哪里。该PHP代码中的每个插入都成功插入,包括我回应要被AJAX捕获的数据。我通常会认为它正在运行到最后。

旁注,我使用的是Visual Studio。当我使用IE进行调试时,所有AJAX回调中的警报都不会触发。我切换到Chrome,他们能够被抓住并且开火了。

在Chrome中>网络工具,有两个条目。首先,调用 processing.php ,这是红色的。第二次调用 index.html?yearsGroup1 = 2016& yearsGroup2 = 2016 ... ,然后是GET请求风格的页面上的所有变量[我现在意识到的是只是在SUBMIT之后重新加载页面。

最后,当我在AJAX中检查 err 时 - > ERROR回调,我看到了:

Object {readyState: 0, responseJSON: undefined, status: 0, statusText: "error"}

我不太确定从哪里开始。

1 个答案:

答案 0 :(得分:0)

因此无论出于何种原因,当我将代码转移到另一个文件夹时,会出现一条非破坏性警告:

警告未知 0

此时我把头伸进显示器。 PSA :不要像我这样的白痴,总是检查你的PHP 15额外的错误。

我向所有评论此事的人道歉,因为他浪费你的时间来完全无能。再次感谢大家的帮助。