0

下面的代码是我的实现中 ajax 调用的响应。 /* response of ajax call */ <script> var count = 6; </script> <div> some code goes here</div>

如何从jquery中的ajax响应中获取上述计数值

   $.ajax({
        url: url,
        type: "GET",
        dataType: "text",
        timeout: 20000,
        success: function(response){  },
        error: function(){/* error code goes here*/}
    }); 
4

3 回答 3

1

尝试更改服务器发送 Ajax 响应的方式,例如使用 JSON:

{
    "data": {
        "count": 6
    },
    "html": "<div>some code goes here</div>"
}

然后使用此脚本访问计数器:

$.getJSON({
    url: url,
    timeout: 20000,
    success: function(response) {
        console.log(response.data.count);
    },
    error: function() {/* error code goes here*/}
}); 
于 2013-08-20T10:37:56.227 回答
0

您的回复全文如下:

<script> var count = 6; </script> <div> some code goes here</div>

使用此代码获取指定标签之间的结果:

var resultmatch = xmlHttpReq.responseText.match(/<script>(.*?)<\/script>/);

如果你当时有:

echo resultmatch;

它会输出:

var count = 6;

= = =

但是,由于您想要 count 的值,因此只需使用一条语句即可:

eval(xmlHttpReq.responseText.match(/<script>(.*?)<\/script>/));

这将导致在您的 html 页面中显示 JavaScript,var count = 6; 就好像它是作为代码输入的一样。所以现在你有了一个名为count的变量,你可以随意使用它。

如果你这样做了:

echo count;

它会输出:

6

当然,您可以在后续的 JavaScript 中使用变量count来使用它的值。

于 2013-09-11T22:43:38.267 回答
0

如果您必须接受上述字符串形式的返回值并从中提取计数值,那么 RegExp 可以节省一天的时间:

var COUNT_DIGIT_EXPRESSION = /count\s?=\s(\d+);/i;

$.ajax({
  url: url,
  type: "GET",
  dataType: "text",
  timeout: 20000,
  success: function(response){
    var countMatch = response.responseText.match(COUNT_DIGIT_EXPRESSION);
    var countInt;

    // Return val from match is array with second element being the matched
    // capturing subgroup (\d+), which is the digit or digits themselves.
    if (countMatch && countMatch.length == 2) {
      countInt = parseInt(countMatch[1], 10);
    }
    console.log('Count value is ' + countInt);
  },
  error: function(){/* error code goes here*/}
}); 
于 2013-08-20T11:04:14.550 回答