0

コードビハインドで私は持っています

  Public arrayString As String() = {"100~USA~UsaDescr", "101~SPAIN~SpainDescr"}

エラーをスローする JavaScriptUncaught SyntaxError: Unexpected token ~は次のとおりです。

   $(document).ready(function () {

            var Country = eval('[<% =String.Join(", ", arrayString)%>]');

            $('#slider').slider({
                max: 1,
                min: 0,
                slide: function (event, ui) {
                    var splitValues = Country[ui.value].split("~");
                    $('#hpGame').html(splitValues[0]);
                    $('#hpHome').html(splitValues[1]);
                    $('#hpAway').html(splitValues[2]);
                }
            });
        });

ここで何が間違っていますか?

4

4 に答える 4

2

多分あなたはこれを変更する必要があります

var Country = eval('[<% =String.Join(", ", arrayString)%>]');

これで

var Country = ['<% =String.Join("', '", arrayString)%>'];
于 2013-10-11T20:40:07.193 に答える
1

問題は次のように発生します。

これに参加しようとすると

{"100~USA~UsaDescr", "101~SPAIN~SpainDescr"}

結果は

"100~USA~UsaDescr, 101~SPAIN~SpainDescr"

だからあなたがやろうとすると

eval("100~USA~UsaDescr, 101~SPAIN~SpainDescr")

チルダには特別な意味があるため、エラーが発生します。

チルダは、通常は何の目的もないと思われることを行う演算子です。これは単項演算子で、式を右側に取り、次の小さなアルゴリズムを実行します (N はチルダの右側の式です): -(N+1)。

ソース: http://www.joezimjs.com/javascript/great-mystery-of-the-tilde/

したがって、それを評価するとエラーが発生します

于 2013-10-11T20:44:59.953 に答える
1

最小の変更を伴う最も簡単な修正は、VB 側から文字列に引用符を追加することです。

Public arrayString As String() = {"""100~USA~UsaDescr""", """101~SPAIN~SpainDescr"""}

誰かがコメントで述べたように、 . も必要ありませんeval

これが何が起こっているかです。strstring を含むという変数があったとします"foo"。次に、これ:

<%= str %>

あなたに与えるでしょう:

foo

一方、引用符で囲んだとしましょうstr:

str = """" + str + """"

次に、次のようになります。

"foo"

JavaScript はこれらの引用符を必要とするため、文字列の一部である必要があります。それが理にかなっていることを願っています。

于 2013-10-11T20:39:55.103 に答える
0

文字列を囲む引用符が失われており、使用する必要はありません (使用する必要はありません) eval()。また、javascript のシリアル化は一般的な問題です。手動で行う必要はありません (すべきではありません)。

コード ビハインドで:

Dim serializer as New System.Web.Script.Serialization.JavaScriptSerializer()
Public arrayString As String() = {"100~USA~UsaDescr", "101~SPAIN~SpainDescr"}
Dim arrayJson as String = serializer.Serialize(arrayString)

あなたのページで:

var Country = <%=arrayJson%>;
于 2013-10-11T20:46:11.103 に答える