Web サイトに 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 は、「タグ」配列が次のようになっていることを示しました。
[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';
}
ご覧のとおり、$tags を error_log に記録します。
このセットアップを実行すると、2 つのエラーが発生します。1 つ目は $tags 変数で、2 つ目は生成されます。
[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
私はこれを数時間いじりましたが、私のプログラミングスキルを大いに疑い始めています...
軌道に戻るのを手伝ってください。ヒントでも大歓迎です!