3

とにかく、私が少し怒っているので、これで何か間違ったことをしているのを見ることができますか(金曜日の脳なのか赤ちゃんの脳なのかはわかりません)...

ローカルでは正常に動作するが、別のサーバーにデプロイすると動作しない Ajax 投稿があります。

期待どおりのパラメーターを取得していることを確認するために多くのアラートを入れたので、何が欠けているのかよくわかりません。

ajaxの投稿は次のとおりです。

意見:

 var theUrl = "/Widgets/TestBin2AutomationResults/" + widgetImpressionId + "/" + retailerProductId + "/" + quantity;
                        alert("widgetImpressionId" + widgetImpressionId);
                        alert("retailerProductId" + retailerProductId);
                        alert("quantity" + quantity);
                        alert(theUrl);
                        $("#imgaddtocart").hide();
                        $("#addMe").unbind('click');
                        $("#delete").unbind('click');

                        $.ajax({
                            type: "POST",
                            url: theUrl,
                            data: { 'username': username, 'password': password },
                            dataType: "json",
                            success: function (data) {

                                if (data != null) {
                                    alert("we are inside data");

コントローラ:

        [JsonpFilter]
        [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult TestBin2AutomationResults(int widgetImpressionId, int retailerProductId, int quantity, string username, string password)
        {


            MessageBox.Show("We are inside TestBin2Automation controller " + widgetImpressionId + "/" + retailerProductId + "/" + quantity + "/" + username + "/" + password);

Global.asax

 routes.MapRoute("Bin2SubmitTestBin2Automation", "Widgets/TestBin2AutomationResults/{widgetImpressionId}/{retailerProductId}/{quantity}", new { controller = "Widgets", action = "TestBin2AutomationResults", widgetImpressionId = 0, retailerProductId = 0, quantity = 0, username = "", password = "" });

MessageBox.Show が表示されていないため、コントローラーにアクセスしていません。

週末ずっとこれが私の頭にぶら下がっていないのはいいことです!

どうもありがとう

4

4 に答える 4

2

私は私のmvcプロジェクトでもこの問題に直面しています....

次の手順でこの問題を解決しました。

1)これをレイアウトページのスクリプトセクションに配置します

<script type="text/javascript">
    var RootUrl = '@Url.Content("~/")';
</script>

2) ajax url に「RootUrl」変数を追加します。(また、ajax URLの前に「RootUrl」を追加するJsファイルも機能しています)

var theUrl = RootUrl +"Widgets/TestBin2AutomationResults/" + widgetImpressionId + "/" + retailerProductId + "/" + quantity;

それは私にとって完璧に機能していますが、他の解決策がある人は、私に投稿してください

于 2014-05-21T17:22:10.920 に答える
0

URL が「/」で始まる場合は、ドメインのルートから URL を解決しようとすることを意味します。アプリケーションがドメインのルートまたは仮想ディレクトリの下にデプロイされていることを確認してください。仮想ディレクトリの下にデプロイされている場合は、AJAX 呼び出し中に仮想ディレクトリを含めるように JavaScript コードを変更する必要があります。

于 2013-11-18T10:15:01.727 に答える
0

実際には、コントローラーでAmazon AWSにアクセスしようとしていましたが、構成にアクセスキーを入れていませんでした。最初の行にヒットしていないため、そのコントローラーに入っていないと思いましたが、ほとんど削除したコントローラーからのすべてのロジックは正常にコントローラーに入力されたため、ajax呼び出しではなく、内部のロジックでした-最初の行に到達していないため、そこに到達していないと思いましたが、そうではありませんでした. したがって、コントローラーを非常に基本的なものに分解すると、実際の問題が何であったかがわかります。

于 2013-11-18T11:52:31.473 に答える
0

ajax ポストはローカルで機能するため、ライブ Web サーバーで CORS を有効にしてみてください。クロスオリジン ドメインが、問題の背後にある可能性が高い理由です。バックエンドで何を使用していますか? PHP、ASP.NET、または Python のどれですか?

于 2013-11-15T10:36:16.687 に答える