2016-04-09 7 views
0

私はHTMLプロジェクトを作成しています。 APIとjQueryを使用して株価を取得します。しかし、<form>属性を指定して送信しようとすると、ページが更新されます。リフレッシュを防止するにはどうすればよいですか?HTMLで送信するときのリフレッシュを防止します

addStock();単純なjQueryリクエストを行います。

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>Stock Market Game PRE ALPHA BETA</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
</head> 
<body> 

<form onsubmit="addStock()"> 
    </form> 


    <input type="text" name="stock"> 
    <br> 
    <br> 
    <input type="submit" value="Get Price"> 
    </body> 

...私のコードとaddStock(残りの)

</html> 

あなたはaddStockのための私のコードを(必要な場合)これは次のとおりです。

<script> 
    var Market = {}; 
    var Stocks = []; 
    Market.GetQuote = function(ssymbol, fCallback) { 
     this.symbol = ssymbol; 
     this.fCallback = fCallback; 
     this.DATA_SRC = "http://dev.markitondemand.com/Api/v2/Quote/jsonp"; 
     this.makeRequest(); 
    } 
    Market.GetQuote.prototype.handleSuccess = function(jsonResult) { 
     this.fCallback(jsonResult); 
    } 
    Market.GetQuote.prototype.handleError = function(jsonResult) { 
     console.error(jsonResult); 
    } 
    Market.GetQuote.prototype.makeRequest = function() { 
     //Abort any open requests 
     if (this.xhr) { 
      this.xhr.abort(); 
     } 
     //Start a new request 
     this.xhr = $.ajax({ 
      data: { 
       symbol: this.symbol 
      }, 
      url: this.DATA_SRC, 
      dataType: "jsonp", 
      success: this.handleSuccess, 
      error: this.handleError, 
      context: this 
     }); 
    }; 
    function addStock() { 
     var xForm = document.forms[0]; 
     var xField = xForm.elements[0]; 
     alert("Stock: " + xField.value); 

     Stocks.push(new Market.GetQuote(xField.value.toString(), function jsonResult() { 
      //Gotta catch all the errors 
      if (!jsonResult || jsonResult.Message) { 
       console.error("Error: ", jsonResult.Message); 
       return; 
      } 
      //If it works lets return that json! 
      return jsonResult; 


     })); 
     alert(new Market.GetQuote(xField.value, function jsonResult() { 
      if (!jsonResult || jsonResult.Message) { 
       console.error("Error: ", jsonResult.Message); 
       return; 
      } 
      console.log(jsonResult); 
      return jsonResult[2]; 

     })); 


     new Markit.QuoteService(xField.value, function (jsonResult) { 

//Catch errors 
if (!jsonResult || jsonResult.Message) { 
    console.error("Error: ", jsonResult.Message); 
    return; 
} 
//If all goes well, your quote will be here. 
console.log(jsonResult); 

/** 
* Need help? Visit the API documentation at: 
* http://dev.markitondemand.com 
*/ 
}); 
    }; 
</script> 

答えて

1

はに添付.on(events [, selector ] [, data ], handler)を代入してみinput type="submit"ここで、イベント属性onsubmitの場合、events"click"です。 form提出のデフォルトの動作を防ぐためにhandlerEvent.preventDefault()を使用して

は各form要素がnullまたは taskのいずれかである計画ナビゲーションを、持っている4.10.22.3 Form submission algorithm

を参照してください。最初にformを作成した場合、そのplanned navigationは に設定する必要があります。フォームが非ヌル計画ナビゲーションを持っている場合は、

  1. 削除:ユーザー・エージェントは、特定のリソース先に移動することを計画するために必要な ときに以下の行動では、それ は、次の手順を実行する必要がありますそれはその タスクキューからです。フォームの計画ナビゲーションはnullになりましょう

    1. は、フォームの計画ナビゲーションは、次の手順を実行している で構成され、新たな作業になりましょう。

    2. Navigate宛先への参照のコンテキスト。 replaceがtrueの場合、置換ブラウザー を有効にして、ターゲットブラウジングコンテキストをナビゲートする必要があります。

    この作業の目的のために

    、ターゲット・ブラウジング・コンテキストと交換してください。この計画 ナビゲーションがキューに登録されたとき、彼らが立っていたとして、全体的な形提出 アルゴリズムがその値で、実行されたときに設定された変数です。

    1. フォームの新しい計画的ナビゲーションであるタスクをキューに入れます。

このタスクのタスクソースは、DOM操作タスク・ソースです。

次のように振る舞いは、次のとおり

変異アクションURLレッツクエリがUS-として解釈アプリケーション/ x-www-form-urlencodedでエンコード アルゴリズムを使用して、フォーム・データ・セットを符号化した結果でありますASCII文字列。

パーズアクションのクエリコンポーネントをクエリに設定します。

宛先を、URLシリアライザ アルゴリズムを解析されたアクションに適用することによって形成される新しいURLにします。

Plan to navigate宛先。

HTML

<form>  
    <input type="text" name="stock"> 
    <br> 
    <br> 
    <input type="submit" value="Get Price"> 
</form> 

jQueryの

$("input[type=submit]").on("click", function(event) { 
    event.preventDefault(); 
    addStock() 
}) 
関連する問題