【发布时间】:2012-08-20 10:29:08
【问题描述】:
我尝试在我的网站上实现 Tagit,但我无法让标签数组以我希望的方式运行...
我在谷歌上搜索并尝试了很多不同的方法,但无法正常工作。
这是我的 JavaScript 函数:
function saveSkillTags( tags ) {
$.ajax({
type: "POST",
dataType: "json",
traditional: true,
url: "/../includes/ajaxController.php",
data: {actionCommand : "SAVE_SKILL_TAGS", tags : tags }
}).done(function( res ) {
console.debug('klar');
});
}
Console.debug 向我展示了“tags”数组如下所示:
[Object { label="php", value="php", element=[1], mer...}, Object { label="ajax", value="ajax", element=[1], mer...}, Object { label="javascript", value="javascript", element=[1], mer...}, Object { label="jquery", value="jquery", element=[1], mer...}]
它发布到我的 ajaxController 有这个代码:
if( $actionCommand == 'SAVE_SKILL_TAGS' ) {
require_once( dirname( __FILE__ ).'/../classes/stuff.class.php' );
$list = new UserStuff();
$list->saveSkillTags( $utility->getUserId(), $_POST['tags'] );
}
所以,到目前为止一切都很好......
然后在 stuff.class.php 我有函数“saveSkillTags”。这里是问题... 我尝试对json进行编码和解码,并在没有json的情况下尝试过,但我什么也做不了…… 这是函数:
function saveSkillTags( $userId, $tags ) {
$dbCon = new DBConnection();
//$tags = json_decode($tags);
error_log($tags);
foreach ( $tags as $tag => $value ) {
$skillTag = $dbCon->escape( $value );
$query = "INSERT INTO skilltag SET ";
$query .= "User_fk=".$userId;
$query .= ", TagName='".$skillTag."'";
$dbCon->execute( $query );
error_log($query);
}
mysql_close();
echo 'true';
}
如你所见,我 error_log $tags。
当我运行这个设置时,我得到了两个错误。第一个是$tags var,第二个是生成的。
[24-Aug-2012 22:28:35] [object Object]
[24-Aug-2012 22:28:35] PHP Warning: Invalid argument supplied for foreach() in C:\Users\...\classes\stuff.class.php on line 103
我已经玩了好几个小时了,开始严重怀疑我的编程技能......
请帮助我回到正轨,即使是提示也将不胜感激!
【问题讨论】:
-
尝试重新设置
json_decode并使用var_dump而不是error_log,这样您就可以看到数据结构了。 -
一旦我重新设置
json_decode,它什么都没有显示,而不是[object Object]... -
好的,没有
json_decode的$tags的var_dump是什么?它将显示在页面上,而不是错误日志中。 -
回复是
"[{"label":"kaljsd","value":"kaljsd","element":{"0":{},"length":1},"index":0},{"label":"laksjd","value":"laksjd","element":{"0":{},"length":1},"index":1},{"label":"lkajdasd","value":"lkajdasd","element":{"0":{},"length":1},"index":2}]"但这是@Raidenace 提示和JSON.stringify(tags)。现在我只是以某种方式通过一个 for 循环解析它,我不是... -
只要
json_decode那个 Json 和foreach就可以了。
标签: php javascript jquery ajax arrays