我正在写一个小的导入脚本,由于数据量的原因我必须拆分。
所以我有一个带有花哨的ajax动作的start.php和dbactions.php做了所有的努力工作。
该脚本首先初始化数据,检查双精度并创建一个带有ID的会话。
然后它应该分批通过ID。
在第一次调用时,start.php没有错误,并且脚本的第一部分运行良好,在创建一个超过12k ID的数组的用户会话。
但是当我输出第二次初始化的结果时,它会给出
的错误信息未捕获的SyntaxError:意外的令牌}
见附件截图:
尽管缺少$ 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>
我知道有几个关于它的线程,建议在哪里,charset是错的(不是从ajax除外),但我在每个文件上都有这个:
header('Content-Type: text/html; charset=utf-8');
有一个关于&#39;的建议。和#34;标记,我试图在输出中更改它们,但它没有帮助。
我还想到了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回声,它仍然给我同样的错误。
这怎么可能?所以错误不是来自第二个输出?
答案 0 :(得分:1)
你没有正确地对此进行评论。
'DoSomething('makearray')'
应该是:
"DoSomething('makearray')"
在php中:
echo "<p>Start first? <button type='button' onclick" . "='DoSomething('makearray')" ."id='godosomething'>Go baby</button></p>";
答案 1 :(得分: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>
答案 2 :(得分: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>