2015-03-27 3 views
1

Я бы хотел отправить запрос ajax в файл JSON для извлечения данных. Но вызов ajax не удался с dataType: "json". Когда я меняю dataType на "text", вызов ajax успешно.

ниже код:

$.ajax({ 
    type: "POST", 
    url: url, 
    dataType: "json", 
    success: function(response) { 
     console.log("success"); 
    }, 
    error: function() { 
     alert("failed"); 
    } 
}); 

файл JSON является:

{ 
"mobile": [{"中国": ["1", "2", "3", "4", "5", "6"]}, 
      {"美国": ["3", "5", "10", "20", "30", "50"]} 
      ], 
"uni": [{"德国": ["5", "10", "20", "30", "50"]}, 
     {"英国": ["30", "50", "00", "20", "50"]} 
     ], 
"telcom": [{"法国": ["10", "20", "30", "50", "00", "500"]} 
      ] 
} 
+0

есть ошибки в консоли браузера ... –

+0

попробуйте дескриптор ошибки как 'error: function (jqXhr, status, error) { alert (status + ':' + error + ':' + jqXhr.responseText) } ' –

+0

убедитесь, что вы возвращаете ответ json (text/json) со своего сервера. Ваши данные json, но тип ответа также должен быть json. – dsharew

ответ

1

JSON, который вы предоставили, является допустимым, поэтому я думаю, что ошибка находится в другом месте.
Вы можете использовать multiple values разделенных пробелами в dataType настройки, например:

dataType: "text json", 

Так JQuery получите результат в виде текста и после этого интерпретировать его как JSON.

В комментариях вы говорите, что есть некоторые китайские символы, попробуйте закодировать их в Юникоде.

1

Это потому, что тип данных не JSON, а application/json. Попробуйте

dataType: "application/json" 

, но если это не работает, вы всегда можете использовать DATATYPE текста и JSON.parse его впоследствии, как это все JSON в любом случае.