0
<script type="text/javascript>
(function($, win) {
function mySettingsInitJS () {  

    var self = this;
    var opts = {
        'params' : "userId=" + userId;
    }; 
    self.init = function() {
        self.initUnlinkAction();
    };
    self.initbtnAction = function() {
        $('#Btn').click(self.btnAction);
    };

    self.btnAction = function(e) {
        if(e) { e.preventDefault(); }
        jQuery.post(
        'http://abc/rest/PostRequest', 
        opts.params, function(data) {
        alert('This worked!');
        }, "json");                         
    };

}
function win.MyFilesSettingsInitJS = new MyFilesSettingsInitJS();
}(jQuery, window));
</script>

このスクリプトはベロシティ テンプレート ページにあり、Btn もそこにあります。これは基本的に派手なリンクです。また、サーバー側の残りの API が正常に動作していると確信しています。しかし、どういうわけか私のJavaスクリプト関数は呼び出されません。誰か助けてくれませんか?

4

3 に答える 3

0

ブラウザで利用可能ないくつかの開発者ツールを使用する必要があります。ほとんどのブラウザーには、少なくとも JS エラーを表示するエラー コンソールがあります。たとえば、次のコードにはいくつかの構文エラーがあります。

  1. オブジェクトリテラル (別名マップまたは辞書) を定義しているときに行を終了するのはvar opts = { 'params' : "userId=" + userId; };違法です。;
  2. この行でも、 はどこにuserId定義されていますか? グローバル変数を使用することは悪い習慣であるためuserId、別のスクリプトでグローバル変数が定義されている場合は、コードをリファクタリングする必要があります
  3. function win.MyFilesSettingsInitJS = new MyFilesSettingsInitJS();オブジェクトにプロパティを追加しているため、関数または変数を宣言していないため、違法です。使うだけwin.MyFilesSettingsInitJS = new MyFilesSettingsInitJS();
  4. 実際には、それも間違っている可能性があります。上記で定義したmySettingsInitJS, not MyFilesSettingsInitJS(ただし、その関数は実際には別の場所で定義できますが、コード全体はありません)
于 2012-12-27T14:16:59.290 に答える
0

ここで引用符を忘れたようです:

'http://abc/rest/PostRequest'

適切な構文強調表示を使用すると、かなり明白になります。さらに、 JSLintなどを使用すると、コードのデバッグ時にコンソールだけでなく、ほとんどの問題も検出されます。

于 2012-12-26T04:13:54.277 に答える
0

URL 値は文字列である必要があります...それに引用符を追加してください

于 2012-12-26T04:14:05.147 に答える