如何从ajax响应中获取特定值

时间:2013-08-20 10:26:49

标签: jquery

以下代码是我的实现中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*/}
    }); 

3 个答案:

答案 0 :(得分: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*/}
}); 

答案 1 :(得分: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*/}
}); 

答案 2 :(得分: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 来使用其值。