分割字符串并获取数值

时间:2018-06-22 08:05:25

标签: javascript jquery

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

我知道我发布的jquery代码不正确,但这是我第一次尝试这样的事情。如果有人可以告诉我如何实现这一目标,我将不胜感激。非常感谢

loadActions.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 个答案:

答案 0 :(得分:2)

尝试一下,

  

服务器端代码

这些是更改$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);

答案 1 :(得分:1)

像这样更改您的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"]);
}