繁体   English   中英

从AJAX调用的PHP While Loop内部更新JS ProgressBar?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM