我无法弄清楚我要去哪里。我有一个ajax调用,它调用一个插入语句并返回该插入的ID。这行得通。
但是我正在尝试为此创建一个全局变量,以便可以将ID用作另一个插入和更新中的值,并在不同的ajax调用中进行调用。
我当前获得返回的页面ID,并且可以在控制台中回显它,但是当我调用第二个函数时,它说page_id的整数类型无效。
第一个ajax调用:
<script type="text/javascript">
$(document).ready(function(){
var page_id;
$("#submitForm").click(function(){
event.preventDefault();
var string = $('#pageForm').serialize();
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "addPage.php",
data: string,
dataType: 'json',
cache: false,
success: function(response){
console.log(response['last_insert_id']);
page_id = JSON.stringify(response['last_insert_id']);
}
});
});
});
</script>
调用addpage.php
$addpage = "
INSERT INTO pages (title, page_type_id, display_id, duration)
VALUES ('$title','$page_type','$display_id','$duration');
";
if ($mysqlConn->query($addpage) === TRUE) {
$last_id = $mysqlConn->insert_id;
$data['last_insert_id'] = $last_id;
echo json_encode($data);
} else {
echo "Error: " . $addpage . "<br>" . $mysqlConn->error;
}
所以现在我想将'last_insert_id'作为全局变量存储回我的第一个文件中,以便在另一个ajax调用/插入中使用
<script type="text/javascript">
$(document).ready(function(){
$("#form-data").submit(function(e){
var content = tinymce.get("mytextarea").getContent();
$(".leftContent").html(content);
$("#new").val(content);
var string = $('#form-data').serialize() + page_id;
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "addPanel.php",
data: string,
cache: false,
success: function(response){
console.log(JSON.stringify(response));
}
});
return false;
});
});
</script>
答案 0 :(得分:2)
如代码所示
<script>
$(document).ready(function(){
var page_id = 123;
});
</script>
<script>
$(document).ready(function(){
console.log(page_id);
});
</script>
如果运行此命令,将得到未定义的错误“ page_id”。
之所以会出现这样的错误,是因为第二个$(document).ready回调中的page_id与声明它所在的作用域不同。
例如:
<script>
var page_id = 123;
$(document).ready(function(){
console.log(page_id);
});
</script>
<script>
$(document).ready(function(){
console.log(page_id);
});
</script>
没有错误,并且在控制台中两次记录了123。这是因为page_id已在全局范围内移动。在JavaScript中,父母变量对孩子可用,只要它们不会被诸如以下声明所覆盖:
function test(){var page_id = 456; console.log(page_id);}
这将记录函数page_id值,而不是父作用域中的值。