1

data要素の html属性からデータを送信spanして Ajax で受信し、それを php と mysql で処理して新しい値を html のデータ属性に返そうとしていますが、「$ .parseJSON の予期しない文字"、誰かが私のコードを調べて、データを正しく処理しているかどうかを確認してください。JSON の操作は初めてです。

HTML/PHP

<span data-object=
'{"art_id":"<?php echo $row['art_id'];?>",
"art_featured":"<?php echo $row['art_featured'];?>"}' 
class="icon-small star-color"></span>
<!-- art_id and art_featured are both int and art_featured will be either 1 or 0 -->

jQuery/Ajax

$("span[class*='star']").on('click', function () {
    var data = $.parseJSON($(this).data('object'));
    var $this = $(this);

    $.ajax({
        type: "POST",
        url : "ajax-feature.php",
        data: {art_id: data.art_id,art_featured: data.art_featured}
    }).done(function(result) {
        data.art_featured = result;
        $this.data('object', JSON.stringify( data ));
    });

});

PHP/MySQL

if($_POST['art_featured']==1) {
        $sql_articles = "UPDATE `app_articles` SET `art_featured` = 0 WHERE `art_id` =".$_POST['art_id'];

        $result = array('art_id' => $_POST['art_id'], 'art_featured' => 0);
        echo json_encode($result);
    }
    else if($_POST['art_featured']==0){
        $sql_articles = "UPDATE `app_articles` SET `art_featured` = 1 WHERE `art_id` =".$_POST['art_id'];

        $result = array('art_id' => $_POST['art_id'], 'art_featured' => 1);
        echo json_encode($result);
    }

    if(query($sql_articles)) {

    }
    else {

    }
4

1 に答える 1

3

を使用する必要はありません$.parseJSON。jQuery がそれを行います。

$("span[class*='star']").on('click', function () {
    var data = $(this).data('object');
    var $this = $(this);

    $.ajax({
        type: "POST",
        url : "ajax-feature.php",
        data: {art_id: data.art_id,art_featured: data.art_featured}
    }).done(function(result) {
        data.art_featured = result;
        $this.data('object', data);
    });

});

また、後で文字列化する必要もありません。

于 2013-03-29T18:44:04.647 に答える