Как узнать, являются ли данные возврата Json или String в jQuery и PHP?

Я хочу проверить на стороне клиента (jQuery), возвращать ли данные из функции PHP объект Json или String для назначения другой функции.

jQuery's parseJson генерирует исключение, если json не в правильном формате. Вы можете обернуть свой звонок в блок catch try. (Но помните, что наличие исключений в потоке вашего обычного кода – плохая практика)

data = '{}'; try { json = $.parseJSON(data); } catch (e) { // not json } 

Вы также можете использовать собственный JSON.parse() который SyntaxError исключение SyntaxError

Если вы ожидаете, что плохой JSON будет частью вашего обычного рабочего процесса программы, вы можете сначала проверить его с помощью регулярного выражения, ответ Майка довольно прочный. Но в вашем случае PHP всегда должен генерировать действительный json в нормальных условиях. Если его недействительный, вероятно, есть ошибка в вашем программном обеспечении

 try { jQuery.parseJSON( json ) //must be valid JSON } catch(e) { //must not be valid JSON } 

Возвращаемые данные всегда представляют собой строку (т.е. последовательность символов). Но, если вы скажете jQuery, что вы ожидаете ответ json, он попытается преобразовать строку в объект javascript для вас.
Для передачи объектов javascript через Интернет нет выделенного сетевого протокола.

В javascript вы можете использовать typeof