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, время: 06:37. |