javascript - 即使在使用 AJAX 进行 POST 后值不是 "0",PHP 也会回显 JavaScript 值 "0"

标签 javascript php ajax

我有一个按钮,它使用 AJAX post 方法将值发布到 PHP 中。

当我在 JavaScript 中回显该值时,它总是回显 0,即使我 100% 确定 PHP 中的值不是 0。

这是 JavaScript:

function slanje(br){
  $.ajax({
    type: 'POST',
    dataType: 'html',
    data: {
      'broj' : br,
    }
  });   
}

function otvaranje(id, broj){
  slanje(broj);
  var testNumber = <?php echo $br; ?> + "";

和 PHP(我执行文件写入来检查 PHP 是否收到正确的值):

if(isset($_POST['broj'])){
    $br = $_POST['broj'];
    $file = fopen($br . "broj.txt", "w");
    fclose($file);
}

这是我在 Javascript 中得到的值:

enter image description here

这是 PHP 的值:

enter image description here

编辑2:我想在PHP中发布变量,而不是使用我用ajax传递的索引获取PHP数组元素的值。并且无需重新加载页面。我没有包含数组部分,因为当我进行测试时,我什至无法让它回显我使用 AJAX 传递的变量。

最佳答案

如果您想使用 AJAX 来执行此操作,请让您的 PHP 脚本返回 POSTed 值并在 AJAX 请求的成功处理程序中获取它。 为了使成功处理程序能够更改 testNumber 的值,必须在 function otvaranje 之外声明该变量。

以下是必要的修改(另请注意我添加的注释):

PHP

if(isset($_POST['broj'])){
    $br = $_POST['broj'];
    $file = fopen($br . "broj.txt", "w");
    fclose($file);

    // Just output the value and exit
    // If there is business logic doing something with
    // $br, then move this after that code.
    // But remember to only do this if the script was 
    // called with POST, otherwise the initial request 
    // wouldn't work anymore.
    print $br;
    exit;
}

JavaScript

var testNumber = "<?php echo $br; ?>";

function slanje(br){
    $.ajax({
        type: 'POST',
        dataType: 'html',
        data: {
            'broj' : br,
        },
        success: function(data) {
            // called when the request succeeded
            testNumber = data;
        }
    });   
}

function otvaranje(id, broj){
    slanje(broj);
    // move outside: var testNumber = <?php echo $br; ?> + "";
    // rest of function content
}

关于javascript - 即使在使用 AJAX 进行 POST 后值不是 "0",PHP 也会回显 JavaScript 值 "0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40580232/

相关文章:

javascript - 正确使用点击 :outside with vuetify dialog

javascript - 如何在javascript中打印php变量并更改php的数组格式

javascript - 来自全日历事件点击的 Bootstrap 模式调用

jquery - 使用 javascript 将 Base64 图像上传到 Google 云端硬盘

javascript - 英国区域设置的短格式和长格式的 `Intl.toLocaleTimeString` 行为不一致

php - PHP 回显的 Javascript 不运行

javascript - URL 重定向未从正确的相对来源加载资源

ajax - 原型(prototype)/Ajax.Request 中的 METHOD 问题

jquery - 在触发第二个ajax之前完成第一个ajax,在循环内触发第三个ajax之前完成第二个ajax

javascript - 删除页脚下方的空白