php - 返回 ajax 结果作为全局整型变量

标签 php jquery mysql ajax

我不知道我哪里出了问题。我有一个 ajax 调用,它调用插入语句并返回该插入的 ID。这有效。

但我正在尝试创建一个全局变量,以便我可以在不同的 ajax 调用中调用的另一个插入和更新中使用该 ID 作为值。

我当前获取了返回的页面 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>

最佳答案

如代码所示

<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 值而不是父作用域中的值。

关于php - 返回 ajax 结果作为全局整型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51505064/

相关文章:

php - 单表 INTERSECT 替代方案

mysql - 为什么 left outer join 对我来说失败了?

Java:类似于 Java 中的 ord PHP 的方法

javascript - 在 (document).ready 上更改受正则表达式影响的字符串的颜色

php - 多维数组

javascript - 如何在 blur/focusOut 后重置 div w Contenteditable

Javascript从具有最小值的数组中获取对象,需要找到最小值然后找到对象

mysql - 数据库设计,如何设置表

php - Emberjs,服务器端 vs 客户端,All in?

php - 限制 PHP 表单仅上传特定大小的 gif、jpeg 或 png?