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. Ночь сидел, так и не понял в чём ошибка. |
Это надо с жикверей разбираться. Хотя бы посмотри в заголовках браузера, что уходит. Не знаю какой у тебя, в ФФ это "сеть", где заголовки.
|
![]() |
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" } }) }); |
Спасибо, помогло.
|
Часовой пояс GMT +3, время: 09:50. |