Primero, he mirado casi todas las demás preguntas aquí sobre este tema, pero no puedo encontrar nada como lo que necesito. Estoy tratando de enviar el ID de usuario de una señal a un script PHP para ponerlo en una base de datos. He probado muchas versiones diferentes de esto.
Aquí está el script que envía al script PHP y lo coloca en la base de datos, pero el ID de usuario es NULL.
//Secondly this will check when subscription changed OneSignal.push(function() { OneSignal.on('subscriptionChange', function (isSubscribed) { if(isSubscribed==true){ OneSignal.getUserId().then(function(userId) { useragentid = userId; var theuserid = userId }).then(function(){ // this is custom function // here you can send post request to php file as well. OneSignalUserSubscription(useragentid); //document.cookie = "theplayerID="+useragentid+";"; var theuserid = OneSignalUserSubscription(useragentid); }); window.location.href = "sub_post.php?userId=" + theuserid + "&sponsor=josh"; document.getElementById('successtext').style.display = 'block'; document.getElementById('unsubscribe').style.display = ''; document.getElementById('subscribe').style.display = 'none'; } else if(isSubscribed==false){ OneSignal.getUserId().then(function(userId) { useragentid = userId; }); document.getElementById('unsubscribe').style.display = 'none'; document.getElementById('subscribe').style.display = ''; } else{ console.log('Unable to process the request'); } }); });
La parte a mirar es esta:
window.location.href = "sub_post.php?userId=" + useragentid + "&sponsor=josh";
Notarás que tengo una var theuserid = userId
ahí. Cuando reemplazo theuserid
useragentid
esa línea, no envía nada, es como si ignorara toda la declaración. Pero cuando uso useragentid
, se envía al script PHP pero es NULL. ¿Por qué funcionaría con useragentid
pero no con theuserid
? ¿Será porque uno es global y el otro no? ¿Eso haría que ignorara por completo la declaración al usar el theuserid
de usuario porque no es global?
Espero que alguien pueda ayudar con esto sin el código completo porque creo que es un simple error de script de Java lo que estoy causando, así que creo que el código completo realmente no es relevante.
SOLUCIÓN:
OneSignal.getUserId(function(userId) { window.location.href = "sub_post.php?userId=" + userId + "&sponsor=josh"; });
Esto me permite obtener el ID de usuario nuevamente en una función y luego enviarlo al script PHP que lo captura con éxito.