325

Chrome でページを実行すると、「uncaught syntaxerror unexpected token U」というエラーが表示されます。そしてFirefoxでは、「JSON.parse:予期しない文字」が表示されます。PHPファイルからjsonデータを返していますが、返されたjson文字列は有効です。http://jsonlint.com/で確認しました。助けていただければ幸いです...ありがとう。

返された JSON 文字列は次のとおりです

[
    ["1","Pan Africa Market","\"1521 1st Ave, Seattle, WA\"","47.608941","-122.340145","restaurant"],
    ["2","The Melting Pot","14 Mercer St, Seattle, WA","47.624562","-122.356442","restaurant"],
    ["3","Ipanema Grill","1225 1st Ave, Seattle, WA","47.606366","-122.337656","restaurant"],
    ["4","Sake House","230 1st Ave, Seattle, WA","47.612825","-122.34567","bar"],
    ["5","Crab Pot","1301 Alaskan Way, Seattle, WA","47.605961","-122.34036","restaurant"],
    ["6","Mexican Kitchen","2234 2nd Ave, Seattle,WA","47.613975","-122.345467","bar"],
    ["7","Wingdome","1416 E Olive Way, Seattle, WA","47.617215","-122.326584","bar"],
    ["8","Piroshky Piroshky","1908 Pike pl, Seattle, WA","47.610127","-122.342838","restaurant"]
]
4

12 に答える 12

701

このエラーは通常、 に指定された値JSON.parseが実際に である場合に発生しますundefined。したがって、これを解析しようとしているコードを確認します。おそらく、ここに示されている実際の文字列を解析していないでしょう。

于 2012-10-23T02:00:58.463 に答える
14

(MVCプロジェクトで)検証中にこのメッセージが表示されました。私にとっては、 ValidationMessageFor要素を追加することで問題が解決しました。

正確には、jquery.validate.unobtrusive.js の 43 行目で問題が発生しました。

  replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;
于 2015-10-13T13:51:40.673 に答える
11

JSON.parse のパラメータが何も返さない可能性があります (つまり、JSON.parse に指定された値は ですundefined)!

xyz.sol ファイルからコンパイルされた solidity コードを解析しているときに発生しました。

import web3 from './web3';
import xyz from './build/xyz.json';

const i = new web3.eth.Contract(
  JSON.parse(xyz.interface),
  '0x99Fd6eFd4257645a34093E657f69150FEFf7CdF5'
);

export default i;

次のようにスペルミスがありました

JSON.parse(xyz.intereface)

何も返していませんでした!

于 2019-01-24T13:50:36.647 に答える
5

このエラーが発生する最も一般的なケースは、コントロールを生成しているテンプレートを使用してから方法を変更したり、デフォルトのテンプレートを次のようなもので「オーバーライド」することによって生成されたりすることですidname

@Html.TextBoxFor(m => m, new {Name = ViewData["Name"], id = ViewData["UniqueId"]} )

そして、に変更ValidationMessageForするのを忘れて

@Html.ValidationMessageFor(m => m, null, new { data_valmsg_for = ViewData["Name"] })    

これで時間が節約できることを願っています。

于 2015-11-04T15:37:23.493 に答える
1

私の場合、XHRResponse が戻ってくる前に、AJAX 変数で JSON.parse() を呼び出そうとしていました。例えば:

var response = $.get(URL that returns a valid JSON string);
var data = JSON.parse(response.responseText);

$.getの jQuery サイトの例に置き換えました。

<script type="text/javascript"> 
    var jqxhr = $.get( "https://jira.atlassian.com/rest/api/2/project", function() {
          alert( "success" );
        })
          .done(function() {
//insert code to assign the projects from Jira to a div.
                jqxhr = jqxhr.responseJSON;
                console.log(jqxhr);
                var div = document.getElementById("products");
                for (i = 0; i < jqxhr.length; i++) {
                    console.log(jqxhr[i].name);
                    div.innerHTML += "<b>Product: " + jqxhr[i].name + "</b><BR/>Key: " + jqxhr[i].key + "<BR/>";
                }
                console.log(div);
            alert( "second success" );
          })
          .fail(function() {
            alert( "error" );
          })
          .always(function() {
            alert( "finished" );
          });

        // Perform other work here ...

        // Set another completion function for the request above
        jqxhr.always(function() {
          alert( "second finished" );
        });
</script>
于 2015-11-30T21:22:54.943 に答える
0

これは難しい作業ではありません。この問題は私のサイトでも発生し、js ファイルを上位の順序でシフトする必要があります。JSON 解析を使用している場所では、今回は JS ファイルがロードされていないためです。例 #

<script type="text/javaScript">
...........SOME CODE.............
</script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>

への変更

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script type="text/javaScript">
...........SOME CODE.............
</script>
于 2017-07-28T10:29:16.907 に答える