Подтвердить что ты не робот

Как проверить, является ли переменная строковым типом

Я получаю данные с помощью ajax, и результатом может быть либо массив результатов, либо строковый оператор, как "результаты не найдены". Как я могу узнать, есть ли у меня какие-либо результаты или нет? Я пробовал этот подход:

if result == String
    do something

но его не работает, как

if typeof(result) == "string"
    do something

Есть ли какая-либо другая функция, которая может помочь мне получить тип переменной? Или, может быть, я смогу проверить его для типа Array, также было бы очень полезно

4b9b3361

Ответ 1

использовать typeof

doSomething(result) if typeof result is 'string'

Обратите внимание, что typeof является оператором, а не функцией, поэтому вы не пишете typeof(result)

Вы также можете сделать это

doSomethingElse(result) if typeof result isnt 'string'

или даже

return if typeof result is 'string'
   doSomething result
else
   doSomethingElse result

Подробнее о Coffeescript условностях см. http://coffeescript.org/#conditionals.

Ответ 2

Убедитесь, что результатом является строка:

Это можно сделать так, как это делают многие общие библиотеки :

isString = (obj) -> toString.call(obj) == '[object String]'

Убедитесь, что результатом является массив:

Вы также можете попытаться использовать встроенную функцию Array.isArray и вернуться к аналогичный тип проверки типов, как указано выше:

isArray = Array.isArray or (obj) -> toString.call(obj) == '[object Array]'

Ответ 3

Это работает?

if Object.prototype.toString.call(result) == '[object String]'
    do something

Ответ 4

Почему вы не используете JSON для кодирования ответа PHP и возвращаете утверждение, которое легко анализировать в AJAX?

Ваш php-метод:

// if it an error write :
$response = array('status' => 'failed', 'error' => 'Write your error');

// if it a success, you can also pass multiple values to say it an array, or "0 results"
$response = array('status' => 'success', 'value' => 'your value(s)');

$data = json_encode($response);

Ваш JQuery script:

 var obj = {};

obj.first= your_first_post_value;

var str = jQuery.param(obj);

$.ajax({
    type: 'POST',
    url: 'your url',
    data: str,
    dataType: 'json',
    success: function(response) {
        if ( response.status == 'success' ) {
      // do whatever you want when it ok
        }
    else {
     // do whatever you want when it not ok
        }
    }
});