2011-08-12 23 views
2

パラメータを渡すためにasp.netバックエンドにコードを書きますが、パラメータが長すぎると動作しません。フロントエンドでaspxからJavaScriptに渡すパラメータ

folderList.InnerHtml += "<span onclick='AttachId(" + folder.Id + ")'>" + folder.DisplayName + "</span>"; 

:バックエンドで

function AttachId(id) { 
      $("[id$='hf_FolderId']").val(id); 
      $("[id$='btn_Move']").click(); 
     } 

パラメータfolder.Id="AQMkAGQ2YzBkYjkxLWZjNTYtNDAwAS1hZWY2LWQ3OWI2MDkxZTE2ZAAuAAAD82EfyZcOUkeLGnLBkE1iOgEA04D3/FOc8ES6LdlZ5/AXHgAAAQRaEQAAAA=="

私は "123" に変更した場合、それは動作します。何か案が?

また、パラメータを前後に渡すより良い方法を教えてください。どうもありがとう。

答えて

1

引用。 123は数字なので、JavaScriptは問題ありません。 abcを試しても、失敗すると思います。マークアップであなたの文字列に引用符を追加するとうまくいくはずです。

folderList.InnerHtml += "<span onclick='AttachId(\"" + folder.Id + "\")'>" + folder.DisplayName + "</span>"; 

文字列連結を使用してHTMLを生成すると、常にエラーが発生しやすくなります。 JavaScriptの文字列は、HTML属性のように引用符で囲む必要があります。アトリビュートにはシングルクォートを使用しているため、JavaScriptには二重引用符またはhtmlエンコードされた一重引用符を使用する必要があります。これは動作するはずです:

"... onclick='AttachId(\"" + folder.Id + "\")'>" + ... 
+0

abcへの変更が失敗した場合でもあなたは正しいですが、ipr101が示唆したように書いていますか?まだ失敗します –

+0

コード例を書くことができますか多くの感謝 –

+0

あなたは、男。ありがとうございました! –

0

実際には、問題はあなたのパラメータの長さではなく、代わりに含まれている引用符"と考えています。

エスケープしてみます。

+0

AttachId()の前後に一重引用符を削除しますか?幸運なことではない。 –

0
<span onclick='AttachId(" + folder.Id + ")'> 

私はこれに変更されるべきだと思う - だから、変数は文字列として関数に渡され

<span onclick='AttachId('" + folder.Id + "')'> 

+0

ラッキーではありません:(まだ失敗しました –

関連する問題