2013-08-20 5 views
0

Ниже приведен код ответа ajax в моей реализации. /* response of ajax call */ <script> var count = 6; </script> <div> some code goes here</div>Как получить определенное значение от ответа ajax

как получить выше значение счетчика от АЯКС ответа в JQuery

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

ответ

1

Try, чтобы изменить способ, как ваш сервер отправляет ответ 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*/} 
}); 
+0

спасибо J.M за ваш ответ. ответ приходит как html и содержит тег скрипта, который имеет значение count, необходимо получить доступ к этому значению count, а ajax dataType - это текст. – shi69

+0

Вы не можете изменить тип ответа? – Jublo

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*/} 
}); 
0

С полным текстом вашего ответа существа:

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

Используйте этот код, чтобы получить результат между указанными тегами:

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

Если вы тогда были:

echo resultmatch; 

Он выведет:

var count = 6; 

= = =

Но так как вы хотите, чтобы значение счетчика, сделать это с помощью одного оператора, как, например:

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

Этот приведет к отображению на вашей странице html JavaScript, var count = 6; как будто он был введен как код. Итак, теперь, когда у вас есть переменная с именем , счет со значением, вы можете использовать его как хотите.

Если вы тогда сделали:

echo count; 

Он выведет:

6 

И, конечно, вы можете использовать переменную количество в вашей постоянной JavaScript, чтобы использовать его значение.

Смежные вопросы