gpt4 book ai didi

php - JQuery Ajax Tagit 数组到 PHP 返回 [object Object]

转载 作者:行者123 更新时间:2023-11-28 02:44:31 24 4
gpt4 key购买 nike

我尝试在我的网站上实现 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 形式传递 tags 内的数据 - 目前它正在被发布为一个对象。为此,请使用 JSON.stringify()

$.ajax({
type: "POST",
dataType: "json",
traditional: true,
url: "test.php",
data: {actionCommand : "SAVE_SKILL_TAGS", tags : JSON.stringify(tags) }
}).done(function( res ) {
alert(res);
});
});

JSON.stringify 在大多数现代浏览器中可用(但在某些较旧的浏览器中可能不可用)。基本上它需要一个 Javascript 对象并将其转换为 JSON 字符串。请注意,字符串化时,它可能会转义引号和其他内容,以确保生成的 JSON 有效。

因此,在 PHP 脚本中,如果执行 print_r($_POST['tags']),您应该会看到 JSON 的外观,然后可以相应地调整代码。

更新

尝试以下 foreach 循环:

foreach ( $tags as $tag => $value ) 
{
$skillTag = $value->value;
$query = "INSERT INTO skilltag (User_fk, TagName) values ('".$userId."','".$skillTag."')";
$dbCon->execute( $query );
}

关于php - JQuery Ajax Tagit 数组到 PHP 返回 [object Object],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com