Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP&;Javascript:在php中使用Javascript字典_Php_Jquery - Fatal编程技术网

PHP&;Javascript:在php中使用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 = $

我正在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 = $_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));