PHP&;Javascript:在php中使用Javascript字典
我正在javascript字典中存储一些键和值PHP&;Javascript:在php中使用Javascript字典,php,jquery,Php,Jquery,我正在javascript字典中存储一些键和值 var list_of_addressbook_entries = {}; 我在php页面上传递字典 但是当我试图获得javascript dict的键和值时 $attendee_list = $_POST['dict_of_externals']; $shared_attendee_list = $_POST['list_of_shared_addressbook_entries']; $org_attendee_list = $
var list_of_addressbook_entries = {};
我在php页面上传递字典
但是当我试图获得javascript dict的键和值时
$attendee_list = $_POST['dict_of_externals'];
$shared_attendee_list = $_POST['list_of_shared_addressbook_entries'];
$org_attendee_list = $_POST['dict_of_org_users'];
echo json_encode($attendee_list);
return false;
作为回应,我只得到了“[对象]”
我只是想知道如何在php中提取值
在我的javascript中
for(key in list_of_addressbook_entries)
{
alert("key " + key
+ " has value "
+ list_of_addressbook_entries[key]);
}
正在打印键和值
更新
var list_of_addressbook_entries_privilege = [];
function showDetails(guest_name){
var user_name = "<?php echo $_SESSION["user_name"]; ?>" ;
var name = prompt("Please use M for moderator and A for attendee", "Type you name here");
if (!name == null && !name== '' || name == 'M' || name == 'A'){
var ahtml='<div id ="div_id_'+guest_name+'" onclick =remove_addressbook_user("'+guest_name+'") class="addr_list" style="display:block; background: none repeat scroll 0% 0% peachpuff;margin-bottom:1px;">'
ahtml = ahtml + '<span>'+guest_name+'</span>'
ahtml = ahtml + '<input type = "hidden" id ="user_id_'+guest_name+'" value = "'+guest_name+'" /></div>'
$(".address_book_list").append(ahtml);
$("#div_id_"+guest_name).hide();
list_of_addressbook_entries[guest_name] = name ;
}
else{
alert("You have entered the worong value ");
return false;
}
$('#dict_of_externals').val(list_of_addressbook_entries);
for(key in list_of_addressbook_entries)
{
alert("key " + key
+ " has value "
+ list_of_addressbook_entries[key]);
}
}
var list_of_addressbook_entries_privilege=[];
功能展示详情(客人姓名){
var user_name=“”;
var name=prompt(“请使用M作为主持人,使用A作为与会者”,“在此处键入您的姓名”);
如果(!name==null&&!name=''| | name=='M'| | name==''A'){
var ahtml=''
ahtml=ahtml+“”+客人姓名+“”
ahtml=ahtml+“”
$(“.address\u book\u list”).append(ahtml);
$(“#div_id_uu”+来宾名称).hide();
地址簿条目列表[客人姓名]=姓名;
}
否则{
警报(“您已输入worong值”);
返回false;
}
$('dict_of_externals').val(地址簿条目列表);
for(输入地址簿条目列表)
{
警报(“键”+键
+“有价值”
+地址簿条目列表[键];
}
}
Javascript在客户端,php在服务器上执行,如果要将数据从Javascript传递到服务器,需要对服务器进行AJAX调用或通过表单传递
如何调用php代码,如何将数据传递到服务器?答案非常简单: php函数json_encode正在对对象进行编码,因此您正在回送一个json对象,这就是php回送[object object]的原因 如果您想要json符号输出中的输出,您必须执行以下操作
//in case you passed the $attendee_list without encoding
$json_obj = json_encode($attendee_list);
echo json_decode($json_obj);
//otherwise
echo json_decode($attendee_list);
我希望这会有所帮助,干杯吧,因为您可以使用
对这对键值进行迭代,因为在中,地址簿条目列表是一个对象
不能将对象放入值属性中。value属性仅支持字符串
因此,JS将对象转换为字符串,其字符串表示形式为[object object]
如果您想要JSON对象的字符串表示,您将使用:
如果您希望稍后访问JSON对象的属性,则必须使用(或)再次解析字符串,因此我建议将对象保留在内存中,以防以后需要访问其属性值
如果您需要JSON.stringify
支持IEi,这里有一个小的JS库。我的表单中有一个隐藏字段,我正在使用javascript执行$(''dict'u of'u externals').val(地址簿条目列表);要向隐藏字段添加值,您需要对json对象进行字符串化,以便将其发送到服务器。如果您将对象直接存储在隐藏元素上,则要存储的字符串为[object object]。请记住,隐藏元素和文本元素只能存储文本,而json对象在字符串化之前不仅仅是文本。list\u\u addressbook\u条目
是一个对象,不确定如何将其存储在字段值中JSON.stringify(地址簿条目列表)
将给出该对象的字符串表示。@Fabriciomatté我的表单中有一个隐藏字段,从javascript中我正在执行$(“#dict_of_externals”).val(地址簿条目列表);将值添加到隐藏的field@User:法布里科说的话仍然有效。。。如果要将js对象存储在字段值中,则需要将其字符串化。
$('#dict_of_externals').val(JSON.stringify(list_of_addressbook_entries));