0

我在 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;

作为回应,我只得到"[object Object]"

我只想知道如何在 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]);
        }


}
4

3 回答 3

1

Javascript 在客户端,php 在服务器上执行,如果你想将数据从 javascript 传递到你的服务器,你需要对服务器进行 AJAX 调用或通过表单传递它。

你是如何调用 php 代码的,你是如何将数据传递给服务器的?

于 2012-09-18T11:38:26.620 回答
1

正如您可以使用 迭代这对键值一样for inlist_of_addressbook_entries是一个对象。

您不能将对象放在值属性中。value 属性仅支持字符串。

因此 JS 将您的对象转换为字符串,其字符串表示为[object Object].

如果您想要 JSON 对象的字符串表示,您将使用JSON.stringify

$('#dict_of_externals').val(JSON.stringify(list_of_addressbook_entries));

JSON.parse如果您想稍后访问 JSON 对象的属性,则必须使用(或)再次解析字符串jQuery.parseJSON,因此我建议将对象保留在内存中,以防您稍后需要访问其属性值。

如果您需要JSON.stringify支持 IE<=7,这里有一个小型 JS 库:
https ://github.com/douglascrockford/JSON-js

于 2012-09-18T11:52:20.170 回答
0

答案很简单:

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);

希望对你有帮助,加油

于 2012-09-18T11:45:59.970 回答