[英]JS ProgressBar update from inside PHP While Loop called by AJAX?
我有一个带有表单的PHP页面。 提交表单后,它将通过AJAX调用另一个PHP页面以对MySQL进行调用,然后处理结果,并将其返回到第一个PHP页面。 MySQL处理在while
循环内进行。 我想更新一个进度条,该进度条指示循环的进度。 但是我得到:
parsererror
SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外字符
并没有任何反应。 如果我在下面做的任何想法是错误的? 如何从称为while循环的AJAX更新进度栏?
以下是一个粗略的代码:
PHP主页:
<html>
<head>
<link rel="stylesheet" type="text/css" href="jquery-ui.css">
<script type='text/javascript' src='jquery-1.11.1.min.js'></script>
<script type='text/javascript' src='jquery-ui-1.10.4.min.js'></script>
<script type='text/javascript' src='my.js'></script>
</head>
<body onLoad="onLoad()">
<form action="" method="POST" id="myForm" name="myForm">
<div id="progressBar"></div>
<input class="txt"
id="btnSubmit"
style="margin-top: 12pt; font-family: arial; color: grey; font-weight: bold; font-size: 15pt;"
type="submit"
name="action"
value="SEARCH" />
</form>
</body>
</html>
my.js
具有:
function onLoad() {
$('#progressBar').progressbar({ disabled: true });
$('#progressBar').hide();
}
$(document).ready(function() {
$("#myForm").submit(function(event) {
$(function () {
.ajax({
url: 'myCall.php', // the script to call to get data
type: "POST",
data: { data: 'something'}
},
dataType: 'json',
success: function(data) {
// do something
},
error: function (jqXHR, textStatus, errorThrown){
console.log(textStatus, errorThrown);
},
});
});
});
并且myCall.php
对MySQL数据库进行了一些调用,然后进行后处理:
$result = mysqli_query($mysqli, $sql);
$j = 1;
// enable and show the bar
echo '<script language="javascript"></script>';
echo '$("#progressBar").show();';
echo '$("#progressBar").progressbar({';
echo 'disabled: false,';
echo 'value: '.$j.',';
echo 'max: '.$result->num_rows.',';
echo '});';
echo '</script>';
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
// doing stuff and then update the bar
// update
echo '<script language="javascript"></script>';
echo '$("#progressBar").progressbar({';
echo 'value: '.$j.',';
echo '});';
echo '</script>';
}
// disable and hide the bar
echo '<script language="javascript"></script>';
echo '$("#progressBar").progressbar({';
echo 'disabled: true,';
echo '});';
echo '$("#progressBar").hide();';
echo '</script>';
您正在解析的JSON似乎是无效的JSON。 我将打印出您试图通过解析器运行的JSON,并通过JSON验证器(例如http://jsonformatter.curiousconcept.com/)运行它。
另外,以下代码对我来说似乎不干净,这可能会导致问题。 我不确定您是否使用更标准化的JSON解析器。 如果是这样,则可能不会在数据对象中包含数据对象。 这是一个完整的猜测,但您可能应该更改
.ajax({
url: 'myCall.php', // the script to call to get data
type: "POST",
data: { data: 'something'}
},
至
.ajax({
url: 'myCall.php', // the script to call to get data
type: "POST",
data: { "key1" : "value1"}
},
我认为您实际上并未显示要在问题中解析JSON的位置。 您是否能够准确显示解析方式和解析内容?
谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.