Javascript Ajax调用只在Chrome中获取部分数据,所有数据都在IE和Firefox中
首先,这在Firefox和Internet Explorer中非常有效。我有一个ajax调用,用于检索数据(审查和评级)。这就是profile.php的输出或数据。问题是,在Chrome中,我没有返回$review变量。除此之外我什么都有。它甚至没有出现在Chrome开发者工具页面的源代码中 它在Firefox和IE中正常工作,没有任何问题 Chrome中显示提交文本的唯一位置是“网络”下“标题”选项卡下的“请求有效负载”部分。我试过搞乱contenttype,但它只会让事情变得更糟 表格:Javascript Ajax调用只在Chrome中获取部分数据,所有数据都在IE和Firefox中,javascript,php,ajax,google-chrome,parse-platform,Javascript,Php,Ajax,Google Chrome,Parse Platform,首先,这在Firefox和Internet Explorer中非常有效。我有一个ajax调用,用于检索数据(审查和评级)。这就是profile.php的输出或数据。问题是,在Chrome中,我没有返回$review变量。除此之外我什么都有。它甚至没有出现在Chrome开发者工具页面的源代码中 它在Firefox和IE中正常工作,没有任何问题 Chrome中显示提交文本的唯一位置是“网络”下“标题”选项卡下的“请求有效负载”部分。我试过搞乱contenttype,但它只会让事情变得更糟 表格: &
<div class="wrapper" id="reviewwrap"><form id ="enterreview" name="enterreview" method="post" action="/upload.php?<?php echo $whoseprofile;?>"><textarea maxlength="4000" class="reviewinput" id="review" name = "enterreview" placeholder="Write your review!"></textarea><div class="ratingcontainer"><input id="inputy" type="number" class="rating" name = "stars" min=0 max=5 step=1 data-size="xs" data-show-caption="false" data-show-clear="false"><button type="submit" class="btn btn-success" name="enterreview" id="reviewbutton">Review</button></form></div>
下面是upload.php:
<?php
require 'autoload.php';
$app_id = (censored);
$rest_key = (censored);
$master_key = (censored);
use Parse\ParseClient;
use Parse\ParseObject;
use Parse\ParseQuery;
use Parse\ParseACL;
use Parse\ParsePush;
use Parse\ParseUser;
use Parse\ParseInstallation;
use Parse\ParseException;
use Parse\ParseAnalytics;
use Parse\ParseFile;
use Parse\ParseCloud;
use Parse\ParseRelation;
use Parse\ParseSessionStorage;
session_start();
ParseClient::initialize( $app_id, $rest_key, $master_key );
$currentUser = ParseUser::getCurrentUser();
if ($currentUser) {
//If it's a review
if(isset($_POST['enterreview'])){
header("Content-type:text/HTML");
$review = $_POST['enterreview'];
$star = $_POST['stars'];
$whoseprofile = $_SERVER["QUERY_STRING"];
$reviews = new ParseObject("Reviews");
$reviews->set("text", $review);
$reviews->set("User", $whoseprofile);
$reviews->set("Rating", $star);
$reviews->save();
//POPULATE REVIEWS
$query = new ParseQuery('Reviews');
$query->equalTo("User", $whoseprofile);
$query->descending('createdAt');
$query->limit(6);
$results = $query->find();
for ($i = 0; $i < count($results); $i++) {
$review = $results[$i]->get("text"); //This is the problem variable.
$date = $results[$i]->getCreatedAt();
$commentrating = intval($results[$i]->get("Rating"), 10);
header('Content-Type: text/html; charset=UTF-8');
echo '<input id="input-id' . $i . '" type="number" class="rating" min=0 max=5 step=1 data-size="xs" data-show-caption="false" data-show-clear="false" readonly="false">
<p class="review">' . $review . '</p>' . //The problem variable.
'<script>
$("#input-id' . $i . '").rating("update", ' . $commentrating . ');
</script>'
;
}
exit();
}
} else {
header("Location: /login");
exit();
}
?>
您的AJAX请求是否在所有浏览器中都返回正确的数据?换句话说,问题是Chrome没有获取数据,或者没有显示数据?它在IE和Firefox中返回所有正确的数据。在Chrome中,它会正确地返回用户随审核提交的评分;然而,评论本身并没有在Chrome中返回。我想知道标题(“内容类型:text/HTML”)代码>需要是标题(“内容类型:text/html”)代码>我会检查服务器日志,看看请求命中了什么。您的代码有主要错误:您在循环中执行header()
调用,同时执行echo
调用。这将用“headers ready sent”警告充斥您的输出。如果它没有被淹没,那么您的php安装将在禁用警告/错误的情况下运行,这通常是一件不好的事情:如果您只是禁止任何错误,您就无法调试东西。
<?php
require 'autoload.php';
$app_id = (censored);
$rest_key = (censored);
$master_key = (censored);
use Parse\ParseClient;
use Parse\ParseObject;
use Parse\ParseQuery;
use Parse\ParseACL;
use Parse\ParsePush;
use Parse\ParseUser;
use Parse\ParseInstallation;
use Parse\ParseException;
use Parse\ParseAnalytics;
use Parse\ParseFile;
use Parse\ParseCloud;
use Parse\ParseRelation;
use Parse\ParseSessionStorage;
session_start();
ParseClient::initialize( $app_id, $rest_key, $master_key );
$currentUser = ParseUser::getCurrentUser();
if ($currentUser) {
//If it's a review
if(isset($_POST['enterreview'])){
header("Content-type:text/HTML");
$review = $_POST['enterreview'];
$star = $_POST['stars'];
$whoseprofile = $_SERVER["QUERY_STRING"];
$reviews = new ParseObject("Reviews");
$reviews->set("text", $review);
$reviews->set("User", $whoseprofile);
$reviews->set("Rating", $star);
$reviews->save();
//POPULATE REVIEWS
$query = new ParseQuery('Reviews');
$query->equalTo("User", $whoseprofile);
$query->descending('createdAt');
$query->limit(6);
$results = $query->find();
for ($i = 0; $i < count($results); $i++) {
$review = $results[$i]->get("text"); //This is the problem variable.
$date = $results[$i]->getCreatedAt();
$commentrating = intval($results[$i]->get("Rating"), 10);
header('Content-Type: text/html; charset=UTF-8');
echo '<input id="input-id' . $i . '" type="number" class="rating" min=0 max=5 step=1 data-size="xs" data-show-caption="false" data-show-clear="false" readonly="false">
<p class="review">' . $review . '</p>' . //The problem variable.
'<script>
$("#input-id' . $i . '").rating("update", ' . $commentrating . ');
</script>'
;
}
exit();
}
} else {
header("Location: /login");
exit();
}
?>