Javascript jQuery Ajax方法成功,但未收到任何数据
我在这个问题上花了10多个小时,基本上在整个互联网上寻找解决方案。这是一个简单的jqueryajaxpost方法,我以前成功地使用过几次。过去我也有这个问题,但不知怎么解决了。我传递的数据似乎还可以,在chrome的网络控制台中,它甚至显示了一篇成功的文章,其中包含了假定的数据。但是,使用.load获取该数据总是返回null。在下面的代码中,我使用了一个阻止默认提交的表单来防止刷新。按钮触发sellBook(),该按钮提示表单,提交后触发post() JSJavascript jQuery Ajax方法成功,但未收到任何数据,javascript,php,jquery,ajax,post,Javascript,Php,Jquery,Ajax,Post,我在这个问题上花了10多个小时,基本上在整个互联网上寻找解决方案。这是一个简单的jqueryajaxpost方法,我以前成功地使用过几次。过去我也有这个问题,但不知怎么解决了。我传递的数据似乎还可以,在chrome的网络控制台中,它甚至显示了一篇成功的文章,其中包含了假定的数据。但是,使用.load获取该数据总是返回null。在下面的代码中,我使用了一个阻止默认提交的表单来防止刷新。按钮触发sellBook(),该按钮提示表单,提交后触发post() JS function sellBo
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请求,发送javascriptformdata
变量中包含的数据。传递给success函数的javascriptdata
变量是该php脚本的响应,以澄清问题,将浏览器定向到db2.php
,或使用jquerysload()
method,向db2.php
发出一个完全独立的请求。php没有共享内存-所有内容都是创建的,然后销毁每个请求。您可以在屏幕截图中看到这一点-您首先看到一个POST请求,然后是一个独立的GET请求。
success: function(data) {
alert(data);
$('#results').html(data); //.load("db2.php/");
},