Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   curl vs Ajax (https://javascript.ru/forum/misc/65192-curl-vs-ajax.html)

Betr1488 03.10.2016 04:33

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.
Ночь сидел, так и не понял в чём ошибка.

warren buffet 03.10.2016 05:15

Это надо с жикверей разбираться. Хотя бы посмотри в заголовках браузера, что уходит. Не знаю какой у тебя, в ФФ это "сеть", где заголовки.

Betr1488 03.10.2016 13:24


destus 03.10.2016 13:32

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"
        }
    })
});

Betr1488 03.10.2016 13:42

Спасибо, помогло.


Часовой пояс GMT +3, время: 09:50.