Php 从codeigniter中的外部表单获取JSON数据
我有一个外部web表单,它将数据发布到我的控制器URL。数据以JSON字符串的形式发送 我需要做的是获取JSON字符串中的各个值,并将它们添加到我的数据库中。然而,我在获取发布的值和解码它们时遇到了一些困难 这是我尝试过的代码-任何帮助都将非常感谢Php 从codeigniter中的外部表单获取JSON数据,php,json,codeigniter,Php,Json,Codeigniter,我有一个外部web表单,它将数据发布到我的控制器URL。数据以JSON字符串的形式发送 我需要做的是获取JSON字符串中的各个值,并将它们添加到我的数据库中。然而,我在获取发布的值和解码它们时遇到了一些困难 这是我尝试过的代码-任何帮助都将非常感谢 public function index() { $this->load->view('lead'); $form_data = array( 'firstname' => json_decode($th
public function index() {
$this->load->view('lead');
$form_data = array(
'firstname' => json_decode($this->input->post('first_name')),
'lastname' =>json_decode($this->input->post('last_name')),
'number' =>json_decode($this->input->post('phone_number')),
'email' =>json_decode($this->input->post('email')),
'suburb' =>json_decode($this->input->post('suburb')),
'state' =>json_decode($this->input->post('state')),
'enquiry' =>json_decode($this->input->post('enquiry'))
);
// run insert model to write data to db
if ($this->AddLeadModel->SaveForm($form_data) == TRUE) // the information has therefore been successfully saved in the db { //Do something if successful }
不要对单个表单字段进行json_解码。 您必须使用json对传入字段进行json_解码, 然后使用数组数据再次填充表单 简单地说:您从字段填充到JS端的数组中,然后对json_进行编码以传输到服务器。现在需要扩展json以获取数组
// decode the incomning json
// you get an array
$json_array = json_decode($this->input->post('the_form_field_name_of_your_json'));
// now assign the array data to the form
$form_data = array(
'firstname' => $json_array['first_name'],
...
...
);
试试这个:
$json = file_get_contents('php://input');
$input_data = json_decode($json, TRUE);
将用一个例子解释(这很有效):
// Assuming the values you are getting via POST
$first_name = '{"first_name" : "Parag"}';
$last_name = '{"last_name" : "Tyagi"}';
$phone_number = '{"phone_number" : "9999999999"}';
$form_data['firstname'] = json_decode($first_name, TRUE)['first_name'];
$form_data['lastname'] = json_decode($last_name, TRUE)['last_name'];
$form_data['number'] = json_decode($phone_number, TRUE)['phone_number'];
print_r($form_data);
// Assuming the values you are getting via POST
$first_name = "{'first_name' : 'Parag'}";
$last_name = "{'last_name' : 'Tyagi'}";
$phone_number = "{'phone_number' : '9999999999'}";
$form_data['firstname'] = json_decode($first_name, TRUE)['first_name'];
$form_data['lastname'] = json_decode($last_name, TRUE)['last_name'];
$form_data['number'] = json_decode($phone_number, TRUE)['phone_number'];
print_r($form_data);
演示:
// Assuming the values you are getting via POST
$first_name = '{"first_name" : "Parag"}';
$last_name = '{"last_name" : "Tyagi"}';
$phone_number = '{"phone_number" : "9999999999"}';
$form_data['firstname'] = json_decode($first_name, TRUE)['first_name'];
$form_data['lastname'] = json_decode($last_name, TRUE)['last_name'];
$form_data['number'] = json_decode($phone_number, TRUE)['phone_number'];
print_r($form_data);
// Assuming the values you are getting via POST
$first_name = "{'first_name' : 'Parag'}";
$last_name = "{'last_name' : 'Tyagi'}";
$phone_number = "{'phone_number' : '9999999999'}";
$form_data['firstname'] = json_decode($first_name, TRUE)['first_name'];
$form_data['lastname'] = json_decode($last_name, TRUE)['last_name'];
$form_data['number'] = json_decode($phone_number, TRUE)['phone_number'];
print_r($form_data);
现在检查下面的内容(这不起作用):
// Assuming the values you are getting via POST
$first_name = '{"first_name" : "Parag"}';
$last_name = '{"last_name" : "Tyagi"}';
$phone_number = '{"phone_number" : "9999999999"}';
$form_data['firstname'] = json_decode($first_name, TRUE)['first_name'];
$form_data['lastname'] = json_decode($last_name, TRUE)['last_name'];
$form_data['number'] = json_decode($phone_number, TRUE)['phone_number'];
print_r($form_data);
// Assuming the values you are getting via POST
$first_name = "{'first_name' : 'Parag'}";
$last_name = "{'last_name' : 'Tyagi'}";
$phone_number = "{'phone_number' : '9999999999'}";
$form_data['firstname'] = json_decode($first_name, TRUE)['first_name'];
$form_data['lastname'] = json_decode($last_name, TRUE)['last_name'];
$form_data['number'] = json_decode($phone_number, TRUE)['phone_number'];
print_r($form_data);
演示:
// Assuming the values you are getting via POST
$first_name = '{"first_name" : "Parag"}';
$last_name = '{"last_name" : "Tyagi"}';
$phone_number = '{"phone_number" : "9999999999"}';
$form_data['firstname'] = json_decode($first_name, TRUE)['first_name'];
$form_data['lastname'] = json_decode($last_name, TRUE)['last_name'];
$form_data['number'] = json_decode($phone_number, TRUE)['phone_number'];
print_r($form_data);
// Assuming the values you are getting via POST
$first_name = "{'first_name' : 'Parag'}";
$last_name = "{'last_name' : 'Tyagi'}";
$phone_number = "{'phone_number' : '9999999999'}";
$form_data['firstname'] = json_decode($first_name, TRUE)['first_name'];
$form_data['lastname'] = json_decode($last_name, TRUE)['last_name'];
$form_data['number'] = json_decode($phone_number, TRUE)['phone_number'];
print_r($form_data);
说明:
// Assuming the values you are getting via POST
$first_name = '{"first_name" : "Parag"}';
$last_name = '{"last_name" : "Tyagi"}';
$phone_number = '{"phone_number" : "9999999999"}';
$form_data['firstname'] = json_decode($first_name, TRUE)['first_name'];
$form_data['lastname'] = json_decode($last_name, TRUE)['last_name'];
$form_data['number'] = json_decode($phone_number, TRUE)['phone_number'];
print_r($form_data);
// Assuming the values you are getting via POST
$first_name = "{'first_name' : 'Parag'}";
$last_name = "{'last_name' : 'Tyagi'}";
$phone_number = "{'phone_number' : '9999999999'}";
$form_data['firstname'] = json_decode($first_name, TRUE)['first_name'];
$form_data['lastname'] = json_decode($last_name, TRUE)['last_name'];
$form_data['number'] = json_decode($phone_number, TRUE)['phone_number'];
print_r($form_data);
如果您将帖子中的JSON传递给
JSON\u decode
,它将失败。有效的JSON字符串具有带引号的键。因此,请检查您的案例,看看您(通过POST)获得的JSON是什么格式。两者之间的(细微)区别是使用双引号(“
)和单引号(”
)在JSON字符串中。是的。这可能是OP没有获得其解码值的原因之一。这可能会起作用,但我发现最好将表单序列化为JSON并传输该对象,而不是将每个表单字段作为JSON传输。关键字:“jquery post form serialized”-var form_data=$(“#form”).serialize();
-.请检查JSON字符串格式。检查下面的答案。这就是我要找的,需要稍加修改,但效果很好。谢谢!