Как проверить, является ли переменная строковым типом
Я получаю данные с помощью ajax, и результатом может быть либо массив результатов, либо строковый оператор, как "результаты не найдены". Как я могу узнать, есть ли у меня какие-либо результаты или нет?
Я пробовал этот подход:
if result == String
do something
но его не работает, как
if typeof(result) == "string"
do something
Есть ли какая-либо другая функция, которая может помочь мне получить тип переменной? Или, может быть, я смогу проверить его для типа Array, также было бы очень полезно
Ответы
Ответ 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
}
}
});