2012-01-09 11 views
1

誰かがそのコードが機能しない理由を教えてもらえますか?document.readyの外でajaxリクエストを移動すると404エラーが発生する

この最初のjqueryのモバイルページでjsコード:

function finish() { 
      var selectedRowsVal = []; 
      jQuery("input:checked").each(function(){ 
       selectedRowsVal.push(jQuery(this).val()); 
      }); 
      if(selectedRowsVal.length === 0){ 
      alert(111); 
      }else{alert(selectedRowsVal.length); 
      jQuery.ajax({ 
       url: "../Login", 
       data: {selectedRows: 1}, 
       method: 'post', 
       error: function(XMLHttpRequest, textStatus, errorThrown){ 
        alert('status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText); 
       }, 
       success: function(data){} 
      }); 
      } 
     } 

そして、これは別のjQueryのモバイルページでフィニッシュ関数の呼び出しです:

<div data-role="footer" data-position="fixed" data-theme="b"> 
      <div data-role="navbar" dir="rtl"> 
       <ul> 
        <li><a href="#" onclick="finish();" data-role="button">finsh</a></li> 
        <li><a href="#" data-role="button">send to many</a></li> 
        <li><a href="#" data-role="button">send</a></li> 
       </ul> 
      </div><!-- /navbar --> 
     </div><!-- /footer --> 

AJAXコールバックからアップ示すエラー404 not foundです.jQuery.ajaxのコードをjQuery(document).readyの最初のページ(インデックスページ)に入れても問題ありません。

+4

エラー404はあなたのURL( "../Login")見つからないことを示しています。 –

+0

@rontornambe私はそれを知っていましたが、私が質問したように:私がjquery(document).readyから同じjqueryモバイルの最初のページで呼び出すと、うまくいきます。 onReady関数が失敗する – aomar

+0

相対的な位置付け "../"を使用しているため、不正なファイル参照になる可能性があります。この仮説をテストするには、URLを完全に修飾し、テストを実行します。 –

答えて

0

これはあなたの問題を解決しますが、私が知る限り、$.ajax()機能の場合はmethodというオプションはありません。

タイプ

デフォルト: 'GET'

ドキュメントから

  jQuery.ajax({ 
      url  : "../Login", 
      data : { selectedRows: 1 }, 
      type : 'post', 
      error : function(XMLHttpRequest, textStatus, errorThrown){ 
       alert('status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText); 
      }, 
      success : function(data){} 
     }); 

:あなたのコードでmethodセットを持っているように設定する必要がありますtypeオプションがしかしあります作成するリクエストのタイプ( "POST"または "GET")。デフォルトは "GET"です。注: PUTやDELETEなどの他のHTTPリクエストメソッドもここで使用できますが、すべてのブラウザ ではサポートされていません。

出典:http://api.jquery.com/jquery.ajax/