Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.10.2016, 04:33
Новичок на форуме
Отправить личное сообщение для Betr1488 Посмотреть профиль Найти все сообщения от Betr1488
 
Регистрация: 03.10.2016
Сообщений: 5

curl vs Ajax
Есть код:
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://gcm-http.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );
echo $result;

Нужно сделать средствами JS,
Получилось примерно следующее.
$.ajax({
    headers: {
    "Content-Type" : "application/json",
    'Authorization': 'key=AIza***kTbxQ'
    },
    url: "https://gcm-http.googleapis.com/gcm/send",
    type: "POST",
    timeout : '5000',
    async : true,
    dataType: "JSON",
    data : {
        registration_ids : ["***"],
        data : { 
        'title' : '123',
        "message" : "123123!",
        'vibrate' : "1",
        'sound' : "1"
        }
    }
});

Так вот при выполнении кода на PHP никаких проблем и ошибок, но при на JS ответ от сервера : "JSON_PARSING_ERROR: Unexpected character (r) at position 0."
При удалении строки
"Content-Type" : "application/json"

ошибка уходит, но появляется "Error=MissingRegistration".
Потому что требуется Content-Type.
Ночь сидел, так и не понял в чём ошибка.
Ответить с цитированием
  #2 (permalink)  
Старый 03.10.2016, 05:15
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Это надо с жикверей разбираться. Хотя бы посмотри в заголовках браузера, что уходит. Не знаю какой у тебя, в ФФ это "сеть", где заголовки.
Ответить с цитированием
  #3 (permalink)  
Старый 03.10.2016, 13:24
Новичок на форуме
Отправить личное сообщение для Betr1488 Посмотреть профиль Найти все сообщения от Betr1488
 
Регистрация: 03.10.2016
Сообщений: 5

Ответить с цитированием
  #4 (permalink)  
Старый 03.10.2016, 13:32
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Betr1488,
у тебя проблема в том, что когда ты ставишь Content-type: application/json, то должен отсылать именно в таком формате и php будет его из потока читать. Вот так попробуй:
$.ajax({
    headers: {
    "Content-Type" : "application/json",
    'Authorization': 'key=AIza***kTbxQ'
    },
    url: "https://gcm-http.googleapis.com/gcm/send",
    type: "POST",
    timeout : '5000',
    async : true,
    dataType: "JSON",
    data : JSON.stringify({
        registration_ids : ["***"],
        data : { 
        'title' : '123',
        "message" : "123123!",
        'vibrate' : "1",
        'sound' : "1"
        }
    })
});
Ответить с цитированием
  #5 (permalink)  
Старый 03.10.2016, 13:42
Новичок на форуме
Отправить личное сообщение для Betr1488 Посмотреть профиль Найти все сообщения от Betr1488
 
Регистрация: 03.10.2016
Сообщений: 5

Спасибо, помогло.
Ответить с цитированием
  #6 (permalink)  
Старый 03.10.2016, 13:46
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Betr1488, dataType: "JSON" - это для парсинга ответа, а не кодирования данных запроса в json... вот и JSON_PARSING_ERROR... почитай документацию хоть что-ли для начала...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка формы после ajax проверки ShutTap Общие вопросы Javascript 15 08.04.2016 11:46
Объект ajax и приостановка функции kilohertz_. AJAX и COMET 5 18.01.2015 16:33
Проблема с AJAX Dim@ AJAX и COMET 4 16.09.2012 22:52
Ajax таблица gofkane Работа 1 26.09.2011 18:26
Ajax таблица gofkane Работа 0 25.09.2011 11:53