2016-12-30 11 views
0

トピックに関するほぼすべての投稿を読みました。しかし、残念ながら私は私の問題を処理することはできません。問題は、少なくとも私にとっては本当に厄介です: 私は次のようにShoppingControllerクラスで提出要因の追跡状況を取得するためのシンプルなC#のコードがあります。

public string StatusOfFactor(string guid) 
    { 
     // note that guid was being trimmed in javascript 

     Factor factor = (from Factor fact in db.Factors 
         where fact.TrackingCode.ToString() == guid 
         select fact).First(); 
     return factor.StatusOfFactor; 

を、私は次のようにこのメソッドを呼び出すJavaScript関数を持っています:

function TrackPurchase() { 
    var txtTrackingPurchase = $("#inputpeygiry"); 
    var guid = $.trim(txtTrackingPurchase.val()); 
    var urlMain = 'ShoppingController/StatusOfFactor'; 
    alert(urlMain); 

    $.ajax({ 
     type: 'GET', 
     url: urlMain, 
     cache: false, 
     data: guid, 
     success: function (returnVal) { 
      alert("I am sucess function"); 
      $("#StatusOfFactor").html(returnVal); 

     }, 
     error: function (e) { 
      $("#StatusOfFactor").text("nothing is really exist"); 
     } 
    });  
} 

私はユーザの追跡コードを受け取るid="inputpeygiry"というテキストボックスを持っていることに注意してください。 JavaScript関数の上に怒鳴るボタンをクリックして呼び出しです:

<input type="button" class="btn btn-success pull-left" id="btnpeygiry" value="Track Purchase" onclick="TrackPurchase()"/> 

ので問題は成功関数が呼び出すことがないということです! あなたはそれを解決するために私を助けてくれませんか?

+0

あなたは右のURLを持っていますか? 'Shopping/StatusOfFactor'が動作するかどうか確認してください。 – Orangesandlemons

+0

パスは次のようになります:public class ShoppingController:Controller { ApplicationDbContext db = new ApplicationDbContext();購入に 公共の文字列を追跡するための要因の #regionステータスStatusOfFactor(文字列GUID) {// そのGUIDがdb.Factors fact.TrackingCodeにおける因子事実からjavascriptの ファクター係数=(にトリミングされていた注意してください.ToString()== guid ファクト).First(); return factor.StatusOfFactor; } } – Xeta7

+0

あなたのajaxリクエストで 'shopping/StatusOfFactor'を実行します。私はそれが動作すると思う(私はmvcがデフォルトの動作として 'コントローラ'の部分を削除すると思う) – Orangesandlemons

答えて

0

使用しているjQueryのバージョンは?コールバックメソッドはjQuery 3.0から削除されます。代わりにjqXHR.done(),jqXHR.fail()jqXHR.always()を使用できます。 jQuery Get

$.ajax({ 
    type: 'GET', 
    url: urlMain, 
    cache: false, 
    data: guid, 
}) 
.done(function (returnVal) { 
    alert("I am sucess function"); 
    $("#StatusOfFactor").html(returnVal); 

}). 
fail(function (e) { 
    $("#StatusOfFactor").text("nothing is really exist"); 
}); 
+0

Xeta7

+0

なぜ、 'done'と' fail'を使っていないのですか?それはバージョン1.5から利用可能です。 –

+0

私は次のようにコードを作成します: – Xeta7

0

変更の

参照ドキュメントPOSTからGET、それはあなたのために正常に動作する必要があります。

コントローラーのコードは次のようになります。

[HttpPost] 
public string StatusOfFactor(string guid) 
{ 
    // note that guid was being trimmed in javascript 
    Factor factor = (from Factor fact in db.Factors 
        where fact.TrackingCode.ToString() == guid 
        select fact).First(); 
    return factor.StatusOfFactor; 
} 

Javascriptコードは次のようになります。

function TrackPurchase() { 
var txtTrackingPurchase = $("#inputpeygiry"); 
var guid = $.trim(txtTrackingPurchase.val()); 
var urlMain = 'ShoppingController/StatusOfFactor'; 
alert(urlMain); 
    $.ajax({ 
     type: 'POST', 
     url: urlMain, 
     cache: false, 
     data: guid, 
     success: function (returnVal) { 
      alert("I am sucess function"); 
      $("#StatusOfFactor").html(returnVal); 

     }, 
     error: function (e) { 
      $("#StatusOfFactor").text("nothing is really exist"); 
     } 
    }); 
} 
+0

なぜ値を取得したくないときに 'Post'を使うのですか? –

+0

HttpPostも動作しません! – Xeta7

+0

私もブラウザを変更しますが、それは私を助けませんでした。 – Xeta7

関連する問題