2

このコードで問題が発生しました。json は二重引用符の結果を許可しません。元。結果(悲しい「ストーリー」)がある場合、jsonはそれを解析しません。

$('.loader1').show();
$.ajax({
  url: "findBook.php?action=populatemyacademy&bookCatId="+parentCategoryId+"",
  cache: false,
  dataType: "json",
  success: function(data) {
    $('.loader1').hide();
    $.each(data.items, function(i,item){
        $("#myAcademy").append('<div class="nameWrapper"><input name="checkMeM" type="checkbox" value="'+item.bookId+'"/><span title="'+item.bookName+'" class="checkBoxSpan">'+item.bookName+'</span></div>');
    });
}});

PHPスクリプトでjsonを生成する方法は次のとおりです

 $sql = "SELECT academyBookId, title FROM academy_book WHERE academyBookCategoryId = $bookCatId AND academyId = $academyId";
    $qPopulateAcademy = mysql_query($sql, $dbConMain) or die(__LINE__.' '.$sql.' '.mysql_error());
    while($rPopulateAcademy = mysql_fetch_array($qPopulateAcademy)){
        $rows[] = array('bookId' => $rPopulateAcademy [0], 'bookName' => $rPopulateAcademy [1]);
    }
    $jsdecode = json_encode($rows);
    echo "{items:$jsdecode}";
4

1 に答える 1

4

問題は、サーバーがJSONドキュメントで「」としてレンダリングすることです。json_encodeは「」を使用してラップするため、これは機能しません。次のように実行できます。

$jsdecode = json_encode($rows,JSON_HEX_APOS|JSON_HEX_QUOT)

これにより、アポストロフィと引用符が16進コードに置き換えられます。

于 2011-03-08T03:03:19.647 に答える