Когда я проверяю эту часть кода:
echo json_encode(array( 'foo' => 'bar'));
die;
я получаю:
{"foo":"bar"}
Что является допустимым JSON.
(Обратите внимание, что этодвойные кавычки, а не простые кавычки, как вы отправили)
Результат, который вы запрашиваете:
{ foo : 'bar' }
- допустимый Javascript, но - этонедопустимо JSON - поэтому json_encode
не будет возвращать это.
См. json.org для спецификации формата JSON - которая является подмножеством Javascript, а не сам Javascript.
Вместо того, чтобы " сам вырезать кавычки с каким-то безобразным регулярным выражением ", вы должны адаптировать свой код, чтобы он принимал действительный JSON: на мой взгляд, это намного лучше.