我正在尝试修改我的保存例程,以便将null
值传递给id_cellcarrier
到codeigniter中的控制器上。以下是我尝试过的,它不起作用。为了简洁起见,我在这里没有发布这些代码的很多部分。我希望你能够了解我的目标。我是否必须在控制器端执行某些操作才能理解null?
使用Javascript:
/**
* Event: Save Add/Edit Customer Operation "Click"
*/
$('#save-customer').click(function() {
var customer = {
if ($('#cell-carrier').val()== ''){
JSON.stringify({id_cellcarrier: null}),
}else{
id_cellcarrier: $('#cell-carrier').val(),
}
wp_id: $('#wp-id').val(),
notifications: $('#client-notifications').val(),
first_name: $('#first-name').val(),
last_name: $('#last-name').val(),
email: $('#email').val(),
phone_number: $('#phone-number').val(),
address: $('#address').val(),
city: $('#city').val(),
zip_code: $('#zip-code').val(),
notes: $('#notes').val()
};
if ($('#customer-id').val() != '') {
customer.id = $('#customer-id').val();
}
if (!instance.validate(customer)) return;
instance.save(customer);
});
/**
* Save a customer record to the database (via ajax post).
*
* @param {Object} customer Contains the customer data.
*/
CustomersHelper.prototype.save = function(customer) {
var postUrl = GlobalVariables.baseUrl + '/index.php/backend_api/ajax_save_customer';
var postData = {
csrfToken: GlobalVariables.csrfToken,
customer: JSON.stringify(customer)
};
$.post(postUrl, postData, function(response) {
if (!GeneralFunctions.handleAjaxExceptions(response)) {
return;
}
Backend.displayNotification(EALang['customer_saved']);
this.resetForm();
$('#filter-customers .key').val('');
this.filter('', response.id, true);
}.bind(this), 'json').fail(GeneralFunctions.ajaxFailureHandler);
};
控制器:
/**
* [AJAX] Save (insert or update) a customer record.
*
* @param array $_POST['customer'] JSON encoded array that contains the customer's data.
*/
public function ajax_save_customer() {
try {
$this->load->model('customers_model');
$customer = json_decode($_POST['customer'], true);
$REQUIRED_PRIV = (!isset($customer['id']))
? $this->privileges[PRIV_CUSTOMERS]['add']
: $this->privileges[PRIV_CUSTOMERS]['edit'];
if ($REQUIRED_PRIV == FALSE) {
throw new Exception('You do not have the required privileges for this task.');
}
$customer_id = $this->customers_model->add($customer);
echo json_encode(array(
'status' => AJAX_SUCCESS,
'id' => $customer_id
));
} catch(Exception $exc) {
echo json_encode(array(
'exceptions' => array(exceptionToJavaScript($exc))
));
}
}
从模型中
public function add($customer) {
// Validate the customer data before doing anything.
$this->validate($customer);
// :: CHECK IF CUSTOMER ALREADY EXIST (FROM EMAIL).
if ($this->exists($customer) && !isset($customer['id'])) {
// Find the customer id from the database.
$customer['id'] = $this->find_record_id($customer);
}
// :: INSERT OR UPDATE CUSTOMER RECORD
if (!isset($customer['id'])) {
$customer['id'] = $this->_insert($customer);
} else {
$this->_update($customer);
}
return $customer['id'];
}
protected function _update($customer) {
// Do not update empty string values.
foreach ($customer as $key => $value) {
if ($value === '')
unset($customer[$key]);
}
$this->db->where('id', $customer['id']);
if (!$this->db->update('ea_users', $customer)) {
throw new Exception('Could not update customer to the database.');
}
return intval($customer['id']);
}
答案 0 :(得分:0)
乍一看,您的代码中的这一部分似乎必须是拼写错误:
id_cellcarrier: $('#cell-carrier').val() === ''? null: $('#cell-carrier').val(),
,但如果它不是拼写错误,那应该是这样的:
{{1}}