代码之家  ›  专栏  ›  技术社区  ›  user1532468

拆分字符串并获取数值

  •  -2
  • user1532468  · 技术社区  · 7 年前

    我正在将数据从php echo传递到jquery$.get函数,并尝试使用if语句仅检索数字。我遇到的问题是,对于我正在使用的代码,它只提取字符串中的最后一个字符,我知道这就是pop()的作用。但是,我需要做的是在每个数字后面拆分字符串,然后使用pop()提取并使用该值进行更新。

    我知道我发布的jquery代码不正确,但这是我第一次尝试这样做。如果有人能告诉我如何做到这一点,我将不胜感激。多谢

    加载操作.php

      $brtvsql = "SELECT * FROM act WHERE activity='Box Retrieval' AND new = '1'";
      $result = mysqli_query($conn, $brtvsql);
      $brtv_row = mysqli_fetch_assoc($result);
      $count = mysqli_num_rows($result);
      echo 'brtv' . ' ' . '30';
    
      $brtnsql = "SELECT * FROM act WHERE activity='Box Return' AND new = '1'";
      $result = mysqli_query($conn, $brtnsql);
      $brtn_row = mysqli_fetch_assoc($result);
      $count = mysqli_num_rows($result);
      echo 'brtn' . ' ' . $count;
    

    jQuery代码

    setInterval(function() {
      $.get('/domain/admin/loadActions.php', function(data) {
        var value = data;
        if (value.indexOf("brtv") >= 0) {
          var brtv = value.split(/[, ]+/).pop();
          $(".retrievals").text(brtv);
          console.log(brtv);
        }
        if (value.indexOf("brtn") >= 0) {
          var brtn = value.split(/[, ]+/).pop();
          $(".returns").text(brtn);
          console.log(brtn);
        }
      });
    }, 15000);
    

    这就是检查员正在返回的,这是正确的。

    brtv 30brtn 0
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   xxxmatko    7 年前

    像这样改变PHP代码:

    echo 'brtv' . ' ' . '30;';
    echo 'brtn' . ' ' . $count;
    

    请注意号码后面的分号 30 。服务器的响应如下:

    brtv 30;brtn 0
    

    在客户端,您可以这样解析响应:

    var str = "brtv 30;brtn 0";
    var data = {};
    str.split(";").forEach(function(s) {
    	data[s.split(" ")[0]] = s.split(" ")[1];
    });
    
    // Check the result
    if(data["brtv"]) {
    	console.info("brtv: %s", data["brtv"]);
    }
    
    if(data["brtv"]) {
    	console.info("brtn: %s", data["brtn"]);
    }
        2
  •  2
  •   rkj    7 年前

    试试这个,

    服务器端代码

    这些是变化 $response = []; , $response['brtv'] = 30; , header('Content-Type: application/json'); json_encode($response);

      $response = [];
    
      $brtvsql = "SELECT * FROM act WHERE activity='Box Retrieval' AND new = '1'";
      $result = mysqli_query($conn, $brtvsql);
      $brtv_row = mysqli_fetch_assoc($result);
      $count = mysqli_num_rows($result);
      //echo 'brtv' . ' ' . '30';
      $response['brtv'] = 30;
    
      $brtnsql = "SELECT * FROM act WHERE activity='Box Return' AND new = '1'";
      $result = mysqli_query($conn, $brtnsql);
      $brtn_row = mysqli_fetch_assoc($result);
      $count = mysqli_num_rows($result);
      //echo 'brtn' . ' ' . $count;
      $response['brtn'] = $count;
    
      header('Content-Type: application/json');
      echo json_encode($response);
    

    php响应应该如下 https://eval.in/1026851 {"brtv":30, "brtn": 2 } 这里2是$count的假定值

    javascript端

    setInterval(function() {
      $.get('/domain/admin/loadActions.php', function(data) {
        console.log(data.brtv);
        console.log(data.brtn);
      },'json');
    }, 15000);