我已经在这个问题上花费了 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、使用更少的数据(只有一个变量)以及其他一些东西..
最佳答案
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/