0

この未終了の文字列リテラルエラーを修正するにはどうすればよいですか。このエラーの意味と修正方法

以下は完全なコードです:

    <?php
    session_start();

if(isset($_POST['fileImage'])){

$idx = count($_POST ['fileImage']) -1 ;
$output = isset($_POST ['fileImage'][$idx]) ? $_POST ['fileImage'][$idx]['name'] : "";

}

    ?>


    function stopImageUpload(success) {

        var imageNameArray = ['<?php echo  json_encode($output); ?>'];
        var result = '';

        if (success == 1) {
            result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>';
            for (var i = 0; i < imageNameArray.length; i++) {
                $('.listImage').append(imageNameArray[i] + '<br/>');
            }
        }
        else {
            result = '<span class="emsg">There was an error during file upload!</span><br/><br/>';
        }

        return true;
    }​
4

2 に答える 2

2

これは、引用符に何か問題があり(エコーされたコンテンツの余分な単一引用符、またはラインフィード)、パーサーを台無しにしていることを意味します。JSで特別な文字(引用符、改行など)が適切にエスケープされていることを確認してください。

json_encodeあなたのためにこれを行います。

于 2012-04-28T23:13:33.073 に答える
1

より良い解決策は次のようになります。

<?php
session_start();

$results = array();
if(isset($_POST['fileImage'])){
  // not entirely sure what you're trying to achieve here
  // so just replicating the logic you already had
  // but I'm sure there's a better way to do whatever this is trying to do
  $idx = count($_POST['fileImage']) -1 ;
  $results[] = isset($_POST['fileImage'][$idx]) ? $_POST ['fileImage'][$idx]['name'] : "";
}

?>

function stopImageUpload(success) {
  var imageNameArray = <?php echo json_encode($results); ?>;
  var result = '';

  if (success == 1) {
    result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>';
    for (var i = 0; i < imageNameArray.length; i++) {
      $('.listImage').append(imageNameArray[i] + '<br/>');
    }
  } else {
    result = '<span class="emsg">There was an error during file upload!</span><br/><br/>';
  }

  // you might want to use the "result" variable before returning

  return true;
}​

何が変わったのですか?[]の出力の周りを削除し、json_encodeJS ではなく PHP で配列を作成しました。このように、フォームを投稿する$resultsと、単一の要素を持つ配列になり、そうでない場合は空の配列になります。残りのロジックは以前と同じように機能するはずですが、追加したコメントを読んでください。

于 2012-04-29T12:56:29.460 に答える