how to use ajax in magento backend - magento

why ajax call from magento backend(from .phtml) redirects to magento dashboard despite of sending form key properly with form? please help.
in ajax call :
var dataRecord = j('#newForm').serialize();
var url = "<?php echo $this->getUrl('*/*/addNewColumn') ?>";
j.ajax({
type: "POST",
url: url,
data: {data1: dataRecord}
})
.done(function( msg ) {
alert(msg);
});

It worked when i sent the form_key in 'data' of ajax call.
var dataRecord = jQuery('#newForm').serialize();
var url = "<?php echo $this->getUrl('*/*/addNewColumn') ?>";
<?php $k = Mage::getSingleton('core/session')->getFormKey(); ?>
jQuery.ajax({
type: "POST",
url: url,
data: {data1: dataRecord,form_key:'<?php echo $k ?>'}
})
.done(function( msg ) {
alert(msg);
});

Below are the code for ajax in admin panel.
jQuery(".btn_save_email").click(function(){
var data1val = jQuery('.data1val').val();
var data2val = jQuery('.data2val').val();
url = '<?php echo $this->getUrl('moduleName/adminhtml_controllerName/functionName') ?>';
new Ajax.Request(url, {
parameters: {isAjax: 1, method: 'POST',data1:data1val,data2:data2val},
onSuccess: function(transport) {
jQuery('.class').html(transport['responseText']);
}
});
});

var aurl = '<?php echo $this->getBaseurl(); ?>/films/test/ajax';
var data = {};
data['lsize'] = jQuery('#mySlider').slider("values", 0);
data['rsize'] = jQuery('#mySlider').slider("values", 1);
jQuery.ajax({
type: "POST",
url:aurl,
dataType :'json',
data:{ Data },
success:function(response){
jQuery('#output').html(response);
}
});

Related

Passing third data field using Ajax is not working

I'm using a rating script that passes values to the database using Ajax, everything works up until I decided to pass the variable Make. I'm not sure why its not working. I have also tried using data: 'postID='+postID+'&ratingNum='+ratingNum +'&Make='+Make,
But that is also not working.
$(function() {
$('.rate input').on('click', function(){
var postID = <?php echo $postData['id']; ?>;
var ratingNum = $(this).val();
var Make = <?php echo $postData['Make']; ?>;
$.ajax({
type: 'POST',
url: 'https://techhum.com/rating.php',
data: {
'postID': postID,
'ratingNum': ratingNum ,
'Make': Make
},
// data: 'postID='+postID+'&ratingNum='+ratingNum +'&Make='+Make,
dataType: 'json',
success : function(resp) {
if(resp.status == 1){
$('#avgrat').text(resp.data.average_rating);
$('#totalrat').text(resp.data.rating_num);
alert('Thanks! You have rated '+ratingNum+' to "<?php echo $postData['Name']; ?>"');
}else if(resp.status == 2){
$('#show_notification').html('<div class="alert alert-success alert-dismissible">×You have already rated this product.</div>');
$('#subject').val('');
$('#comment').val('');
$('#error_div').html('');
}
$( ".rate input" ).each(function() {
if($(this).val() <= parseInt(resp.data.average_rating)){
$(this).attr('checked', 'checked');
}else{
$(this).prop( "checked", false );
}
});
}
});
});
});

ajax is not sending data to controller

ajax is not sending data to controller
var url = "<?php echo base_url(); ?>";
function allowip() {
var url = "<?php echo base_url(); ?>"
var id = $('#path').attr('value');
$.ajax({
type: "POST",
url: url+"client/home/get_ip",
//dataType: 'text',
data: {'id': id},
//cache: false,
success: function(abc) {
alert(abc);
},
error:function(data) {
alert('no working');
}
});
}
alert is showing with data but not sending data to controller
controller is empty
public function get_ip($id)
{
$day = $this->input->post('id');
echo $day;
}
As your get_ip function have argument $id so it must need to pass on it, url keyword might be conflicting so use different variable name and get the value from #path with val() function.
It might help:
function allowip() {
var id = $('#path').val();
var request_url = "<?php echo base_url(); ?>"+"client/home/get_ip/"+id;
$.ajax({
type: "POST",
url: request_url,
data: {'id': id},
success: function(abc) {
alert(abc);
},
error:function(data) {
alert('no working');
}
});
}
public function get_ip($id)
{
echo $id;
}
or you can do is to post $id in data as you're already doing it but only have to change some lines:
function allowip() {
var id = $('#path').val();
var request_url = "<?php echo base_url(); ?>"+"client/home/get_ip/";
$.ajax({
type: "POST",
url: request_url,
data: {'id': id},
success: function(abc) {
alert(abc);
},
error:function(data) {
alert('no working');
}
});
}
public function get_ip()
{
$day = $this->input->post('id');
echo $day;
}
You are sending a parameter to a function so you can change your code like this
function allowip() {
var id = $('#path').attr('value');
var url = "<?php echo base_url(); ?>"+"client/home/get_ip/"+id
$.ajax({
type: "GET",
url: url,
dataType: "html",
success: function(abc) {
alert(abc);
},
error:function(data) {
alert('no working');
}
});
}
and your action will be
public function get_ip($id)
{
echo $id;
}
I think it is probably the way you are getting the value. It's hard to tell without seeing the view code, but I will assume that $('#path') is an <input...> element of some sort. If that is correct then try getting the value like this
var id = $('#path').val();
Forget about using an argument with the get_ip() function. You are posting to the controller not creating a URL with argument values. Try this.
public function get_ip()
{
$day = $this->input->post('id');
echo !empty($day) ? $day : "No Input"; //or, an empty string instead?
}

How can we check data in controller sent by ajax (not in response) in codeigniter?

I want to send array data from javascript to a view page..But the array isn't getting passed to the view page. The codes are described below:
//array getting passed from this page
<input type="button" name="b">
<script src="<?php echo base_url().'assets/js/' ?>jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$("input[type='button']").click(function(){
question_array=[];
question_array['what is our nationality?']='Bangladeshi';
question_array['what is our national fish?']='Ilish';
number=10;
jQuery.ajax({
type: "POST",
url: "<?php echo base_url(); ?>" + "admin/test",
dataType: 'json',
data: {question_array: question_array,number:number},
success: function(result) {
if (result) {
window.location="<?php echo base_url().'admin/test_page'; ?>";
}
}
});
});
});
</script>
`
In my controller::
public function test()
{
$question_array = $this->input->post('question_array');
$number = $this->input->post('number');
$this->session->set_flashdata('number', $number);
$this->session->set_flashdata('question_array', $question_array);
echo json_encode($number, $question_array);
}
function test_page()
{
$this->load->view('admin/test_page');
}
//The page where I'm sending the array(Question_array not found)
$number = $this->session->flashdata('number');
$question_array = $this->session->flashdata('question_array');
echo $number;
print_r($question_array);
Hope this will help you :
Convert array to object and remove spaces between array keys, like this :
<script type="text/javascript">
$(function(){
$("input[type='button']").click(function(){
var question_array = [];
question_array['what-is-our-nationality'] = 'Bangladeshi';
question_array['what-is-our-national-fish'] = 'Ilish';
var number = 10;
var obj = $.extend({}, question_array);
jQuery.ajax({
type: "POST",
url: "<?php echo base_url('admin/test'); ?>",
dataType: 'json',
data: {question_array : obj, number : number},
success: function(result) {
if (result)
{
window.location="<?php echo base_url().'admin/test_page';?>";
}
}
});
});
});
</script>
You may better try JSON.stringify to solve this,
jQuery.ajax({
type: "POST",
url: "<?php echo base_url(); ?>" + "admin/test",
dataType: 'json',
data: JSON.stringify({question_array: question_array,number:number}),
success: function(result) {
if (result){
window.location="<?php echo base_url().'admin/test_page'; ?>";
}
}
});
I hope the code below can help you. You need post the string i correct JSON format by using stringify. The server will receive the json and decode it to object.
function send(){
var url = "http://localhost/some_url_here";
var data = JSON.stringify({
Bangladeshi: 'what is our nationality?',
Ilish: 'what is our national fish?'
});
$.ajax({
url: url,
type: "POST",
dataType: "json",
data: data,
}).done(function(output){
alert('output is '+ JSON.stringify(output));
});
}
function receive()
{
$result = '';
$stream_clean = $this->security->xss_clean($this->input->raw_input_stream);
$request = json_decode($stream_clean);
$Bangladeshi = $request->Bangladeshi;
$Ilish = $request->Ilish;
$result = array("status" => 200, "id" => $Bangladeshi+$Ilish);
header('Content-Type: application/json');
echo json_encode($result);
}

Ajax implementation in Codeigniter

Why i am not getting any value in my controller. Please help .
Here is my controller : welcome.php
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
public function ajax_process(){
$data = array(
'email' =>$this->input->post('email'),
'password'=>$this->input->post('password')
);
echo json_encode($data);
}
}
**this is my view file : welcome_mesage.php
$(document).ready(function(){
$('#sbtn').click(function(){
var email = $('#email').val();
var password = $('#password').val();
var datas = $('#myform').serialize();
$.ajax({
type: "POST",
url: "http://localhost/codeigniter_testing/index.php/welcome/ajax_process",
data: {email : email, password : password},
success:function(data){
echo data;
}
});
});
});
my base url:
$config['base_url'] = 'http://localhost/codeigniter_testing/';
In your code their are code error
success:function(data){
echo data;
}
you have add alert instead of echo.
EX:
success:function(data){
alert(data.email);
}
Try it....
<script type="text/javascript">
$(document).ready(function(){
$('#sbtn').click(function(){
var email = $('#email').val();
var password = $('#password').val();
var datas = $('#myform').serialize();
$.ajax({
type: "POST",
url: "http://localhost/codeigniter_testing/index.php/welcome/ajax_process",
data: {email : email, password : password},
success:function(data){
var result=eval(data);
alert(result.email);
}
});
});
});
</script>

Yii: get result for ajax request

I have a anchor;
When I click on it, the following code executes:
<script>
$('.viewcnp').click(function() {
event.preventDefault();
var r = prompt("Enter your password:");
if (r) {
$.ajax({
type: "POST",
url: '<?php echo Yii::app()->baseUrl; ?>' + '/index.php/admin/user/viewCnp/id/' + '<?php echo $model->id; ?>',
data: {'password': r},
success: function(data) {
$('.cnpdecrypted').text(data);
},
dataType: 'text'
});
}
});
</script>
this code makes a request to this action:
public function actionViewCnp($id) {
$model = User::model()->findByPk($id);
if ($model) {
return '{"data":"' . Utils::decrypt_cnp($model->cnp) . '"}';
}
else
return false;
}
If in the action I echo the cnp decripted, its there, but i can't set the value because I don't receive it on success.
You should simply use echo instead of return :
if ($model) {
echo Utils::decrypt_cnp($model->cnp);
}

Resources