0

我正在再次编写一个小的导入脚本,由于数据量的原因,我必须对其进行拆分。

所以我有一个带有花哨的 ajax 操作的 start.php,而 dbactions.php 完成了所有艰苦的工作。

该脚本首先初始化数据,检查双精度并创建一个带有 id 的会话。

然后它应该分批通过ID。

在第一次调用时,start.php 没有错误,并且脚本的第一部分运行良好,创建了具有超过 12k id 的数组的用户会话。

但是当我输出第二次初始化的结果时,它给出了错误消息

Uncaught SyntaxError: Unexpected token }

见附件截图:

在此处输入图像描述

尽管缺少 $do 变量,dbactions.php 本身没有错误,并且第一次加载的 start.php 也没有。

start.php 看起来像这样:

<?php
header('Content-Type: text/html; charset=utf-8');
session_start();
$_SESSION['start_counter'] = 0;
$_SESSION['batches'] = 1;
$_SESSION['array_counter'] = 0;
$_SESSION['batchcount'] = 0;
$_SESSION['newsletter'] = 0;


?>

    <!DOCTYPE>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <title>DB-actions</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="main.css" />
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
        <script>
            function DoSomething(what){
                var request = $.ajax({
                    url: "dbactions.php?do=" + what,
                    type: "GET",            
                    dataType: "html"
                });
                $('#godosomething').attr('disabled','true');
                $('#doing').show();
                $('#callmsg').empty();
                $('body').addClass('grey');
                request.done(function(msg) {
                    $('#doing').hide();
                    $("body").removeClass("grey");
                    $("#callmsg").html(msg);          
                });
                request.fail(function(jqXHR, textStatus) {
                    alert( "Request failed: " + textStatus );
                });
            }
        </script>
        <style type="text/css">
            padding, margin: 0;
            body  { padding:20px 0;}
            p { padding-bottom:3px;}
            #callmsg { margin:50px 0; }
            #insertmsg { margin:50px 0; }
            #doing { display:none; position:absolute; bottom:48%; right:48%; border: 1px solid green; padding: 20px; background-color:green; color: white;}
            .grey { background-color: grey; opacity: 0.5;}
            .green { color:green; }
        </style>
    </head>

    <body>

    <h1>Start the import</h1>
    <button type="button" onclick="DoSomething('initialize')" id="godosomething">Go baby</button>
    <div id="callmsg"></div>
    <div id="doing">I am working, please wait...</div>

    </body>
    </html>

我知道有几个关于它的线程,建议在哪里,字符集是错误的(不是 ajax 的例外),但我在每个文件上都有这个:

header('Content-Type: text/html; charset=utf-8');

还有一个关于 ' 和 " 标记的建议,我试图在输出中更改它们,但没有帮助。

我还想到了 print_r 的长输出,但禁用它并没有帮助。

这是第二个输出:

echo '<h2>Batch successfull</h2>';
$_SESSION['start_counter'] = $_SESSION['start_counter'] + $numberofqueries;
$_SESSION['batches']++;
echo "<p>Next? <button type='button' onclick" . "='DoSomething('makearray')" ."id='godosomething'>Go baby</button></p>";
echo '<p>Batch'.$_SESSION['batches'].' from '.$_SESSION['batchcount'].'</p>';
echo '<pre>';
print_r($_SESSION['users']);
echo '</pre>';  

附加编辑

我取消注释整个第二个输出,直到 h2 回显,它仍然给我同样的错误。

怎么会这样?所以错误不是来自第二个输出?

4

3 回答 3

1

你没有正确地引用这个。

   'DoSomething('makearray')' 

应该:

 "DoSomething('makearray')"

在 php 中:

 echo "<p>Start first? <button type='button' onclick" . "='DoSomething('makearray')" ."id='godosomething'>Go baby</button></p>";
于 2013-06-24T07:33:05.977 回答
1

您的 CSS 无效。试试这个。

           <style type="text/css">
                padding { margin: 0;}
                body  { padding:20px 0;}
                p { padding-bottom:3px;}
                #callmsg { margin:50px 0; }
                #insertmsg { margin:50px 0; }
                #doing { display:none; position:absolute; bottom:48%; right:48%; border: 1px solid green; padding: 20px; background-color:green; color: white;}
                .grey { background-color: grey; opacity: 0.5;}
                .green { color:green; }
            </style>

您的第二个按钮有错误。

改变这个

<button type="button" onclick="DoSomething(" makearray")"="" id="godosomething">Go baby</button>

对此

<button type="button" onclick="DoSomething('makearray')" id="godosomething">Go baby</button>
于 2013-06-24T07:45:52.827 回答
0

改变这个 -

echo "<p>Next? <button type='button' onclick" . "='DoSomething('makearray')" ."id='godosomething'>Go baby</button></p>";

到-

echo "<p>Next? <button type='button' onclick=DoSomething('makearray') id='godosomething'>Go baby</button></p>";

让我知道它是否点击。

编辑——

dummy spaces/content从您的文件中删除任何内容。

更改<!DOCTYPE><!DOCTYPE html>

于 2013-06-24T07:52:09.973 回答