Create registration with Jquery - javascript

I create jquery script
function send_form() {
var data = $('#registration').serialize();
alert(data);
$.ajax({
type: "POST",
url: "{{ path('registrationAction') }}",
data: data,
success: function (data) {
if(data.success == true){
alert("Ok");
window.location.replace("{{ path('userRedirectAction') }}");
}
else
alert("False");
}
}
);
}
It's only part. If i alert(data) i have what i need
My controller
public function registrationAction(Request $request)
{
$response = new JsonResponse();
$form = $this->createForm(new UsersType());
if($request->getMethod() == 'POST')
{
$data = $request->request->get('pyramida_modelbundle_users');
$username = $data['username'];
$password = $data['password'];
$email = $data['email'];
$refer = $data['refer_id'];
$user = new Users();
$user->setUsername($username);
$user->setPassword($password);
$user->setEmail($email);
$user->setReferId($refer);
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
$response->setData(array("success" => true));
return $response;
}
return $this->render("CoreBundle:Registration:registration.html.twig", array('form' => $form->createView()));
}
I think that something is wrong in my JQuery, because after the registration the user is not redirected to your page . Please help find the error

You missed to add dataType : 'json'
Here is your solution.
$.ajax({
type: "POST",
url: "{{ path('registrationAction') }}",
dataType : 'json',
data: data,
success: function (data) {
if(data.success == true){
alert("Вы успешно зарегистрированы");
window.location.replace("{{ path('userRedirectAction') }}");
}
else
alert("Произошла ошибка при регистрации");
}
}
);

Related

jQuery AJAX POST not passing data to a PHP script

So i have this jQuery:
$("#dropbin").droppable(
{
accept: '#dragme',
hoverClass: "drag-enter",
drop: function(event)
{
var noteid = "<?=isset($_POST['noteid']) ? $_POST['noteid'] : "" ?>";
if (confirm('Delete the note?')==true)
{
$('#dragme').hide();
debugger
$.ajax({
type: 'POST',
data: noteid,
datatype: 'json',
url: 'deleteNote.php',
success: function(result)
{
alert("Success");
}
});
window.location = "http://discovertheplanet.net/general_notes.php";
}
else
{
window.location = "http://discovertheplanet.net/general_notes.php";
}
}
});
and that includes this url: url: 'deleteNote.php',
in deleteNote.php:
<?php
include "connectionDetails.php";
?>
<?php
if (isset($_POST['noteid']))
{
// $noteid2 = $_POST['noteid1'];
echo "You finally hit this bit, congratulations...";
// $stmt = "UPDATE Notes SET Deleted = GETDATE() WHERE NoteID = (?)";
// $params = $noteid2;
// $stmt = sqlsrv_query($conn, $stmt, $params);
// if ($stmt === false)
// {
// die( print_r(sqlsrv_errors(), true));
// }
}
else
{
echo "No Data";
}
?>
Now even in the URL if i run /deleteNote.php?noteid=25 it hits the "No Data" part of my PHP.
When i run in debugger it populates the variable noteid with a NoteID so that bit is working but the PHP file is saying its not set?
Let's look in your Ajax call:
$.ajax({
type: 'POST',
data: noteid,
datatype: 'json',
url: 'deleteNote.php',
success: function(result)
{
alert("Success");
}
});
Looks nice, but you are sending post data with no id, you're just sending a value. Try this instead.
$.ajax({
type: 'POST',
data: {
noteid: noteid
},
datatype: 'json',
url: 'deleteNote.php',
success: function(result)
{
alert("Success");
}
});

Echo PHP returned value with AJAX in span/div

Ok I have a following HTML, AJAX and PHP script below. I want to get the $deduct value to update <span id="mywallet"></div> field when the AJAX request is processed. How can I do so?
Example Form
<form>
<span id="mywallet">$<?php echo $wallet; ?></span>
</form>
Example flip-process.php structure
<?php
if($_POST){
//process everything
$deduct = (something calculated);
if(success){
$msg = "success";
}else{
$msg = "fail";
}
}
echo $msg;
?>
Ajax Script
$(document).ready(function() {
$("#submit").click(function() {
var dataString = {
flip: $("#flip").val(),
amount: $("#amount").val(),
};
$.ajax({
type: "POST",
url: "flip-process.php",
data: dataString,
cache: true,
beforeSend: function(){
$("#process-flipping").hide();
$(".coin-flip").show();
},
success: function(html){
setTimeout(function(){
$(".message").html(html).fadeIn();
$("#process-flipping").show();
$(".coin-flip").hide();
},3000);
}
});
return false;
});
});
Yes, json is the best solution:
<?php
if($_POST){
//process everything
$deduct = (something calculated);
if(success){
$msg = "success";
}else{
$msg = "fail";
}
echo json_encode(array('status' => $msg, 'deduct' => $deduct));
}
?>
and the ajax success:
success: function(json){
setTimeout(function(){
$(".message").html(json.status).fadeIn();
$("#process-flipping").show();
$(".coin-flip").hide();
},3000);
if(json.status == 'success')
$('#mywallet').html('$' + json.deduct);
}
The best way to do that is to use json
PHP
<?php
$response = [];
if($_POST){
//process everything
$deduct = (something calculated);
if(success){
$response["deduct"] = $deduct;
}else{
$response["msg"] = "your message here";
}
}
header("Content-type:application/json; charset: UTF-8");
echo json_encode($response);
?>
JS
$(document).ready(function() {
$("#submit").click(function() {
var dataString = {
flip: $("#flip").val(),
amount: $("#amount").val(),
};
$.ajax({
type: "POST",
dataType : "json",
url: "flip-process.php",
data: dataString,
cache: true,
beforeSend: function(){
$("#process-flipping").hide();
$(".coin-flip").show();
},
success: function(json){
//json.deduct will has the value you want
}
});
return false;
});
});

Sending data through AJAX to MySQL

So I'm trying to send dynamic generated data with AJAX to mysql.
<script type="text/javascript">
var postId;
function getdata(){
postId = document.getElementsByTagName("post-id");
}
function senddata(){
var data = getdata();
$.ajax({
url: "php/count_shares.php",
type: "POST",
data: data,
success: function(data){
console.log(data);
}
});
}
</script>
The function is done through onClick method per picture. I'm sending a string in the post-id tag. Then with count_shares.php my code is as follows:
$opt = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$server = '';
$dbname = '';
$dsn = "mysql:host=".$server.";dbname=".$dbname;
$username = '';
$password = '';
if (isset($_POST['data'])) {
$click = $_POST['data'];
$sqlcs = ("UPDATE posted_ad_img SET share_count = share_count + 1 WHERE post_id = $click");
$dbcs = new PDO($dsn, $username, $password);
$dbcs->$opt;
$dbcs->prepare($sqlcs);
$dbcs->execute();
}
But nothing is being sent to my database. Any help on this matter?
Try this:
$.ajax({
url: "php/count_shares.php",
type: "POST",
data: "data="+data,
success: function(data){
console.log(data);
}
});
Firstly - you don't return value from getData function. Need to change it
function getdata(){
postId = document.getElementsByTagName("post-id");
return postId[0].nodeValue;
}
Also you have to change your ajax request, something like this:
$.ajax({
url: "php/count_shares.php",
type: "POST",
data: {data: data},
success: function(data){
console.log(data);
}
});
If you provide your html I can write more details

Problems with $_POST["var"] in Yii Controller

i am having problems with $_POST["var"] on controller. It seems to be empty. How can i receive the string being typed on my textFiled?
View
<?php Yii::app()->clientScript->registerCoreScript("jquery"); ?>
<script type="text/javascript">
$(document).ready(function(){
$("#hhmm").change(function(){
$.ajax({
url: "<?php echo CController::createUrl('reqTest01Loading'); ?>",
data: $(this).serialize(),
type: "post",
dataType: "json",
success: function(data) {
if (data.status === 'failure') {
$('#impatto').val('Error request failed.');
} else {
$("#impatto").html(data.total);
}
}
});
});
});
</script>
Controller
public function actionReqTest01Loading() {
$result = array("total" => $_POST['hhmm'], "status"=>"OK");
echo CJSON::encode($result);
}
rules on Controller
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('reqTest01Loading','index','view','admin'),
'users'=>array('#'),
),
thanks in advance
This is because you dont tell ajax call to send parameters.
Try:
$.ajax({
url: "<?php echo CController::createUrl('reqTest01Loading'); ?>",
data: {data:$(this).serialize()},
type: "post",
dataType: "json",
success: function(data) {
if (data.status === 'failure') {
$('#impatto').val('Error request failed.');
} else {
$("#impatto").html(data.total);
}
}
});
And it controller:
public function actionReqTest01Loading() {
// var_dump(Yii::app()->request->getPost('data'));
$result = array("total" => Yii::app()->request->getPost('data'), "status"=>"OK");
echo CJSON::encode($result);
}

How to get the ajax response from success and assign it in a variable using jQuery?

Hello guys I have a problem in getting the response from my ajax. If I display it in the console. I can view it. But How do I assign it in a variable?
Here's what I have.
In my PHP code I have this
public function checkPassword($password){
$username = $this->session->userdata('username');
$validate = $this->members_model->checkPassword($password,$username);
echo $validate;
}
In my jquery I have this
$('#existing').on('keyup',function(){
var id = '<?php echo $this->session->userdata("user_id"); ?>';
var password_url = '<?php echo site_url("member/checkPassword/' +id+ '"); ?>';
$.ajax({
type: 'POST',
url: password_url,
data: '',
dataType: 'json',
success: function(response){
var g = response;
if(g == 1){
$('#existing_info').html('Password is VALID'); //Doesn't display the VALID if the response is 1. Why?
}else{
$('#existing_info').html('Password is INVALID!');
}
}
});
});
$.ajax({
type: 'POST',
url: password_url,
data: '',
dataType: 'json',
success: function(response){
var k=response;
if(k.indexOf("1") != -1)
$('#existing_info').html('Password is VALID');
else
$('#existing_info').html('Password is INVALID!');
}
});
response is in response variable of success function.
indexof returns the index within the calling String object of the first occurrence of the specified value, starting the search at fromIndex,
returns -1 if the value is not found.
try something like this
<script>
var k = null;
$(function(){
$('#existing').on('keyup',function(){
var id = '<?php echo $this->session->userdata("user_id"); ?>';
var password_url = '<?php echo site_url("member/checkPassword/' +id+ '"); ?>';
$.ajax({
type: 'POST',
url: password_url,
data: '',
dataType: 'json',
success: function(response){
if(response == 1){
k = response;
}
}
});
});
})
</script>
In your success response you will get what you are set to output in php.
If you want to get an array or data set you can encode it in json in your php script like
echo json_encode($validate);
Then in your jquery you can use this response like this
var responseData = jQuery.parseJSON(response);
console.log(responseData);
console.log will print json object in browser console.
You can use this json object like this
responseData.some_data
Ajax is asynch so you will have access to it after the ajax method returns:
$('#existing').on('keyup',function(){
var id = '<?php echo $this->session->userdata("user_id"); ?>';
var password_url = '<?php echo site_url("member/checkPassword/' +id+ '"); ?>';
$.ajax({
type: 'POST',
url: password_url,
data: '',
dataType: 'json'
}).then(function(response){
var k;
if(response == 1){
k = response;
//call another function that needs k here
}
});
});
$.ajax({
type: 'POST',
url: password_url,
data: '',
dataType: 'json',
success: function(response){
k=response;
}
});
var k = null;
$('#existing').on('keyup', function() {
var id = '<?php echo $this->session->userdata("user_id"); ?>',
password_url = '<?php echo site_url("member/checkPassword/' +id+ '"); ?>';
$.ajax({
type : 'POST',
url : password_url,
success : function(data) {
if(data === '1') {
k = data;
}
}
});
});
response parameter itself contain data so just assign that to variable and use it.
$.ajax({
type: 'POST',
url: password_url,
success: function(response){
if(parseInt(response) == 1){
var k = response;
}
}
});
Your response data is in response variable of success function. Since the response type is json you can assign it directly to javaScript variable.
Also you comparison is wrong try if(g == '1') instead if(g == 1). You are getting a string as response and your checking equality with a numeric type which won't be equal at any point.
ie:-
$.ajax({
type: 'POST',
url: password_url,
data: '',
dataType: 'json',
contentType:"application/json",// Add Content type too
success: function(response){
k=response;
}
});
if your json response is as shown below
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
you can access menuitem array as
success: function(response){
k=response.menu.popup.menuitem;
}
File Name votepost.php
<?php
include("domain.php");
$csid=$_POST['CSID'];
$voteid=$_POST['VOTEID'];
$myid=$_POST['MYID'];
$usertype=$_POST['USERTYPE'];
$myurl =URL."putvote.php?csid=".$csid."&voterid=".$myid."&voteid=".$voteid."&usertype=".$usertype;
$myurl=str_replace(" ","%20",$myurl);
$jsondata = file_get_contents($myurl);
$data = json_decode($jsondata);
if($data->response=="true")
{
echo 'true';
}
else
{
echo 'false';
}
?>
ajax reponse use $.trim for IF ELSE
$.post("votepost.php", {CSID:csid,VOTEID:voteid,MYID:myid,USERTYPE:usertype}, function (data) {
if($.trim(data)=='true')
{
alert('ok');
}
else
{
alert('error');
}
});
I hope you will solve your problem
You can create the js blank array and assign it to the same array.
var resp = [];
jQuery.ajax({
dataType: "json",
method: 'post',
url: 'ajax.php',
async: false,
data: {postData: 'postData'},
success: function(data){
resp.push(data);
}
});

Categories

Resources