javascript - jQuery Ajax 方法成功,但没有收到数据

标签 javascript php jquery ajax post

我已经在这个问题上花费了 10 多个小时,基本上搜索了整个 Internet 以寻找解决方案。这是一个简单的 jQuery ajax POST 方法,我已经成功使用过几次。过去我也遇到过这个问题,但不知何故解决了。我传递的数据似乎没问题,在 chrome 的网络控制台中,它甚至显示了一个包含假定数据的成功帖子。但是,使用 .load 获取该数据始终返回 null。在下面的代码中,我使用了一个我阻止默认提交的表单来防止刷新。一个按钮触发 sellBook(),它会提示一个表单,之后提交会触发 post()。

JS

    function sellBook(i) {
        $('#results').html('');
        title = books[i].title;
        author = books[i].author;
        ISBN = books[i].ISBN;
        publisher = books[i].publisher;
        image = books[i].image;
        year = books[i].year;
        $('#results').html('Listing for ' + books[i].title + ' by ' + books[i].author + '<br><br><form method="post" action="https://localhost/textbookexchange/db2.php" id="sellIt">Edition #: <input type="text" id="edition" name="edition"/><br><br>Price: $<input type="text" id="price" name="price"><br><br>Condition: <input type="text" id="condition" name="condition"><br><br><input type="submit" value="Submit"><br><br></form>');
        getInfo();

        $('#sellIt').submit(function () {
            post();
            return false;
        });
    }

    function post() {
        price = document.getElementsByName('price')[0].value;
        edition = document.getElementsByName('edition')[0].value;
        condition = document.getElementsByName('condition')[0].value;
        var formData = {
            A: title,
            B: author,
            C: ISBN,
            D: publisher,
            E: image,
            F: year,
            G: soldby,
            H: fblink,
            I: price,
            J: edition,
            K: condition
        };

        var url = 'db2.php/'
        jQuery.ajax({
            type: 'POST',
            url: url,
            data: formData,
            success: function (data) {
                alert(data);
                $('#results').load("db2.php/");
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status + " " + thrownError);

            },
        });
    }

我总是返回成功,从来没有返回错误,因为我收到有关数据的警报。

在我的 apache 错误日志中我得到了这个:

[2015 年 8 月 13 日星期四 11:24:15.666854] [:error] [pid 4255] [client 127.0.0.1:50476] PHP 注意:未定义索引:/var/www/html/textbookexchange/db2.php 中的 A在第 2 行,引用者:https://localhost/textbookexchange/

   db2.php(the php file POSTED to)
   <?php
   echo $_POST['A'];
   ?>

我试过将其解析为 JSON、重置 contentType、设置 dataType、将 crossdomain 设置为 true、将 async 设置为 false、使用 jsonp、使用 $.post、使用更少的数据(只有一个变量)以及其他一些东西..

这是网络请求的截图: The POST succeeds, showing data in preview and form data, while the get only ever returns null

最佳答案

load() 创建一个单独的 get 请求,因此没有 POST 数据供 php 使用。您需要做的是使用从 post 请求返回的数据:

success: function(data) {
    alert(data);
    $('#results').html(data); //.load("db2.php/");
},

关于javascript - jQuery Ajax 方法成功,但没有收到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31992880/

相关文章:

php - 如何检查数组中是否存在给定的键或索引?

javascript - 显示 Bootstrap 图标以及 jqgrid 标题文本

javascript - jquery 选择图片

php - Symfony2 将另一个操作中的操作的响应返回给 JavaScript

javascript - javascript 或 angularjs 中的 PHP microtime()

php - 使用 PDO/PHP 创建 MYSQL 触发器

PHP 打算用作 css 但用作 MIME 类型 text/html

php - 使用引号将 PHP 变量传递给 javascript 函数

javascript - ReactJs - 加载跨域资源

javascript - jQuery 无法识别元素上类的更改