我正在再次编写一个小的导入脚本,由于数据量的原因,我必须对其进行拆分。
所以我有一个带有花哨的 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 回显,它仍然给我同样的错误。
怎么会这样?所以错误不是来自第二个输出?