我正在尝试使用javascript array
将php
传递给JQuery load()
脚本。
这是我的JQuery
:
$('#saveBtn').click(function(e){
e.preventDefault();
//Get hidden field values and store in an Array
$tagArray = [];
//Get the Checked Tags and store in an Array
$('#tag_results :checked').each(function(){
$tagArray.push(this.value);
});
//Make Ajax request to the add_tags script and pass Array as parameter. When response recieved show dialog.
//Pass the name, id and type of company with the array of tags to the save_tags.php script.
$('#test').load('pages/ajax/save_tags.php', {'tags': JSON.stringify($tagArray) ,'name': $('#comp_name').val(), 'id': $('#comp_id').val(), 'type': $('#type').val() });
});
然后,我从POST
:
php script
数组
$id = $_POST['id'];
$name = $_POST['name'];
$type = $_POST['type'];
$tags = $_POST['tags']; //Should be an Array but is a String...
//Type can be company, contact, column, supplement, programme.
if($type === 'company'){
$company = new DirectoryCompany($id);
}
//Loop through the Tag array and add to the item.
foreach($tags as $tag){
$company->addTag($tag, $id);
}
但是,当我执行var_dump($tags)
时,我告诉它是String
,而不是Array
,因此当我通过{{1}时,我收到错误到$tags
循环。我知道一个数组在通过POST传递时应该是一个键值对格式,但是我不能完全确定如何做到这一点,我想通过将它转换为foreach
然后传递它就可以了但它仍然无法正常工作。
非常感谢任何帮助。
答案 0 :(得分:2)
您的变量$_POST['tags']
也使用JSON编码,将其转换为字符串。
在php中你可以使用json_decode():
$tags = json_decode(stripslashes($_POST['tags']));
通过这种方式,您可以获得所需的数组。
答案 1 :(得分:2)
您可以尝试使用json_decode来获取数组。
答案 2 :(得分:0)
$tagsArray
已采用JSON格式。
只需提出这样的请求
$("#test").load("pages/ajax/save_tags.php", {
"tags": $tagArray ,
"name": $("#comp_name").val(),
"id": $("#comp_id").val(),
"type": $("#type").val()
});