问题描述
我正在通过 $form_data = $_POST['form_data'];
引入一些数据。我需要为每个值遍历这些数据,所以我认为 foreach 可能是我想要的。所以我开始:
vardump($form_data
) 并查看: string(125) "Customer_FName=r&Customer_LName=r&Customer_MobileNumber=2&Customer_Email=r%40rco.com&Reservation_Message=&C_Preference_Notes=" 0
酷。所以它作为一个字符串进来。听起来像 $form_data_array=json_decode($form_data);
(我在 AJAX 中将类型设置为 JSON)但这给了我:“警告:为 foreach() 提供的参数无效....... NULL 0”
代码:
$form_data = $_POST['form_data'];
$form_data_array=json_decode($form_data);
foreach ($form_data_array as $key => $data){
$data->Customer_FName;
$data->Customer_LName;
$data->Customer_MobileNumber;
$data->Customer_Email;
$data->C_Preference_Notes;
};
奇怪,所以对于explode
来说可能是更好的工作。
所以:$form_data_array = explode("& ",$form_data);
这给了我“试图获取非对象的属性'Customer_FName'”的错误。
我 `vardump($form_data_array) 并看到它已将其拆分
array(6) { [0]=> string(16) "Customer_FName=r" [1]=> string(16) "Customer_LName=r" [2]=> string(23) "Customer_MobileNumber=2" [3]=> string(24) "Customer_Email=w%402.com" [4]=> string(20) "Reservation_Message=" [5]=> string(19) "C_Preference_Notes=" } 0
好的,现在我到达某个地方了!我将代码更改为:
$form_data = $_POST['form_data'];
$form_data_array = explode("&",$form_data);
foreach ($form_data_array as $key => $data){
$data[Customer_FName];
$data[Customer_LName];
$data[Customer_MobileNumber];
$data[Customer_Email];
$data[C_Preference_Notes];
};
但是我收到每个“for each”的错误 - “警告:非法字符串偏移量'Customer_FName' in ... on line ...”
和
警告:使用未定义的常量 Customer_LName - 假定为 'Customer_LName'(这将在 PHP 的未来版本中引发错误) in ... 在线 ..."
回到爆炸的解码?
现在我没有想法了。我在这里错过了什么?
AJAX
jQuery(document).on('submit','#ajax-add-to',function(e){
e.preventDefault();
var form = jQuery('#ajax-add-to');
var form_data = form.serialize();
jQuery.ajax({
data: {action:'myaction',form_data:form_data},type: 'post',url: my_ajax.ajax_url,dataType: 'JSON',success: function(data){
if(data.status == 'error'){
console.log("[API] ERROR: "+data.message);
}
if(data.status == 'success'){
console.log("[API] SUCCESS: "+data.message);
}
}
});
return false;
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)