2015-01-03 2 views
0

Это мой imple код для отправки формы. Где я хочу вставлять значения табличных данных в базу данных через ajax. Но это не будет контроллер.Передача массива объектов javascript для ajax

$('#submit').click(function(){ 

var TableData = new Array(); 
$('#cart_details tr').each(function(row, tr){ 

TableData[row]={ 
    "productname" : $(tr).find('td:eq(0)').text() 
    , "quantity" :$(tr).find('td:eq(1)').text() 
    , "unit" : $(tr).find('td:eq(2)').text() 
    , "unit_rate" : $(tr).find('td:eq(3)').text() 
    } 

    }); 


TableData.shift(); 

//TableData = $.toJSON(TableData); 
var TableData = JSON.stringify(TableData); 

alert(TableData); 
var followurl='<?php echo base_url()."index.php/purchase/save_product";?>'; 

$.ajax({ 
    type: "POST",      
    url:followurl,             
    data: TableData, 
    datatype : "json", 

    cache: false, 
    success: function (data) { 
    alert("dsad"+data); 
    } 
    }); 

    }); 

Когда я stringify tabledata выходной массив, как это ..

[{"productname":"Copper Sulphate","quantity":"1","unit":"1","unit_rate":"100"}, 
    {"productname":"Hypta Hydrate","quantity":"1","unit":"1","unit_rate":"100"}] 

Мой вопрос, почему он не собирается контроллер? это из-за объекта массива или чего-то еще?

Tabledata - это массив объектов javascript. Я прав??

+1

echo 'followurl' и проверьте его ... – Sadikhasan

+0

уже проверил его..и он правильно –

+0

Какова ваша ошибка? Вы проверили на стороне php? Это нормально? – zwitterion

ответ

0

Использование

$.ajax({ 

вместо

$.post({ 

использовать этот код

$.ajax({ 
    type: "POST",      
    url:followurl,             
    data: {TableData : TableData}, 
    cache: false, 
    success: function (data) { 
    alert("dsad"+data); 
    } 
    }); 

проверка Документация jquery.post

Синтаксис $.post является

$(selector).post(URL,data,function(data,status,xhr),dataType) 

Вам не нужно определить тип,

но здесь вы используете $.ajax смешивания с $.post

это $.ajax функция синтаксиса

$.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 

SO изменить $.post на номер $.ajax и попробовать

+0

Вы должны объяснить –

+0

уверен, что я сделаю :) –

+0

Из того, что я помню, оба будут делать то же самое, я жду ваших объяснений –

0

Как вы можете прочитать в documentation, вы можете передать объект в data. Я думаю, что вы сделаете все проще и проще, если будете следовать этому подходу.

... 
//TableData = $.toJSON(TableData); NO!!! 
//var TableData = JSON.stringify(TableData); NO!!! 

//alert(TableData); 
var followurl='<?php echo base_url()."index.php/purchase/save_product";?>'; 

$.ajax({ 
    type: "POST",      
    url:followurl,             
    data: { 
    dataTable: TableData 
    }, 
    datatype : "json", 
    cache: false, 
    success: function (data) { 
    alert(data); 
    } 
    }); 

}); 

Очень простой пример (без проверки или чего-либо подобного) от index.php/purchase/save_product

$data = $_POST["dataTable"]; 
echo $data[0]["productname"];// Sending back the productName of the first element received. 
die(); 

Как вы можете видеть, вы можете получить доступ к данным в файл index.php/purchase/save_product очень легко, если вы следовали этому подходу.

Надеюсь, это поможет.

0

Привет. Похоже, вы используете некоторые CMS или Framework. Не могли бы вы сообщить нам, какие рамки или CMS вы используете. Тогда я смог бы решить эту проблему. Похоже, вы используете Code Ignitor.Если его так, то я надеюсь, что это поможет вам

$.post("<?php echo base_url();?>index.php/purchase/save_product", function(data) { 
    alert("success"); 
}, 'html') // here specify the datatype 
.fail(function() { 
    alert("error"); 
}) 

в вашем случае, если ваш Аякса вызов должен выглядеть

var followurl="<?php echo base_url();?>index.php/purchase/save_product"; 

$.ajax({ 
    type: "POST",      
    url:followurl,             
    data: TableData, 
    datatype : "json", 

    cache: false, 
    success: function (data) { 
    alert("dsad"+data); 
    } 
    }); 

    }); 

Ошибка Кажется, в вашем followUrl пожалуйста, попробуйте использовать в качестве ИТС шахтный код

Смежные вопросы