Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery Ajax方法成功,但未收到任何数据_Javascript_Php_Jquery_Ajax_Post - Fatal编程技术网

Javascript jQuery Ajax方法成功,但未收到任何数据

Javascript jQuery Ajax方法成功,但未收到任何数据,javascript,php,jquery,ajax,post,Javascript,Php,Jquery,Ajax,Post,我在这个问题上花了10多个小时,基本上在整个互联网上寻找解决方案。这是一个简单的jqueryajaxpost方法,我以前成功地使用过几次。过去我也有这个问题,但不知怎么解决了。我传递的数据似乎还可以,在chrome的网络控制台中,它甚至显示了一篇成功的文章,其中包含了假定的数据。但是,使用.load获取该数据总是返回null。在下面的代码中,我使用了一个阻止默认提交的表单来防止刷新。按钮触发sellBook(),该按钮提示表单,提交后触发post() JS function sellBo

我在这个问题上花了10多个小时,基本上在整个互联网上寻找解决方案。这是一个简单的jqueryajaxpost方法,我以前成功地使用过几次。过去我也有这个问题,但不知怎么解决了。我传递的数据似乎还可以,在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);

            },
        });
    }
函数销售手册(一){
$('#results').html('');
书名=书籍[i]。书名;
作者=书籍[i]。作者;
ISBN=图书[i].ISBN;
publisher=图书[i]。publisher;
image=books[i]。image;
年=书籍[i]。年;
$('#results').html('+books[i]的列表。'+books[i]的标题+“。作者+”

版本:

价格:$

条件:



); getInfo(); $('#sellIt')。提交(函数(){ post(); 返回false; }); } 职能职位(){ price=document.getElementsByName('price')[0]。值; edition=document.getElementsByName('edition')[0]。值; 条件=document.getElementsByName('condition')[0]。值; var formData={ A:标题, B:作者, C:ISBN, D:出版商, E:图像, F:年, G:索尔德比, H:fblink, I:价格, J:版本, K:条件 }; var url='db2.php/' jQuery.ajax({ 键入:“POST”, url:url, 数据:formData, 成功:功能(数据){ 警报(数据); $('#results').load(“db2.php/”); }, 错误:函数(xhr、ajaxOptions、thrownError){ 警报(xhr.status+“”+thrownError); }, }); }
我总是返回成功,而不是错误,因为我得到了一个数据警报

在我的apache错误日志中,我得到以下信息:

[Thu Aug 13 11:24:15.666854 2015][:error][pid 4255][client 127.0.0.1:50476]PHP注意:未定义索引:第2行的/var/www/html/textbookexchange/db2.PHP中的A,参考:

db2.php(发布到的php文件)
我尝试过将其解析为JSON、重置contentType、设置dataType、将crossdomain设置为true、async设置为false、使用jsonp、使用$.post、使用更少的数据(只有一个变量)以及其他一些事情

以下是网络请求的屏幕截图:
load()
创建一个单独的get请求,因此没有供php使用的
POST
数据。您需要做的是使用post请求返回的数据:

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

查看连接上的“Headers”选项卡,您应该会看到实际发送到PHP的内容。javascript作用域可能意味着“title”实际上没有在post()中定义;漂亮的屏幕截图:)谢谢,我需要给出更多的问题背景,包括屏幕和键盘的视觉效果。我建议使用jqXHR对象的Promise方法:
done()
fail()
总是()
then()
。关于“弃用注意事项:jqXHR.success()、jqXHR.error()和jqXHR.complete()回调从jQuery 1.8开始就已弃用。”@kchow FYI:您需要尝试一下这个神奇的按钮,它非常棒:}(请参见键盘按钮:)我需要我的文件db2.php来接收数据。我想将它插入数据库,并返回它是否成功。这只输出数据。我还尝试在Ajax请求之后单独运行load。不走运。即使将页面定向到db2.php,仍然没有数据:(.您已经向
db2.php
发出post请求,发送javascript
formdata
变量中包含的数据。传递给success函数的javascript
data
变量是该php脚本的响应,以澄清问题,将浏览器定向到
db2.php
,或使用jquerys
load()
method,向
db2.php
发出一个完全独立的请求。php没有共享内存-所有内容都是创建的,然后销毁每个请求。您可以在屏幕截图中看到这一点-您首先看到一个POST请求,然后是一个独立的GET请求。
success: function(data) {
    alert(data);
    $('#results').html(data); //.load("db2.php/");
},