2017-04-16 12 views
0

UI側からAJAX関数を使用して呼び出すHTTPハンドラ(ASHX)があります。この呼び出しでは、次のことが必要です。ASP.net/JS/JQuery/AJAX-Ajaxは動作しますが、ハンドライベントが正しく起動しない

セクションがロードされると、shortcodestatusスパンのサーバー上のショートコードのステータスが表示されます。これは、オンまたはオフに言うだろう、次のいずれか

<a class="btn btn-default" id="toggleshortcode">Short Code <span id="shortcodestatus"></span></a>

これは、短いコードのステータスを取得するための関数であり、これは正常に動作します。私は手動でのショートコードのステータスを変更することができますし、私はページをリロードすると、変更は、divの上で適切に反映:

 function ShortCodeStatus() { 
 
      $.ajax({ 
 
       type: "GET", 
 
       url: "Handler.ashx?action=shortcodestatus", 
 
       success: function (output) { 
 
        console.log("getShortCodeStatus: " + output); 
 
        $("#shortcodestatus").empty(); 
 
        if (output == "true") { 
 
         $("#shortcodestatus").text("ON"); 
 
         $("#shortcodestatus").addClass("btn btn-success"); 
 
        } 
 
        else { 
 
         $("#shortcodestatus").text("OFF"); 
 
         $("#shortcodestatus").addClass("btn btn-danger"); 
 
        } 
 
       } 
 
      }); 
 
     };

これはハンドラからのショートコードステータスコードです:

私はCにできるようにしたい

case "shortcodestatus": 
 
    { 
 
     output = ShortCodeStatus() ? "true" : "false"; 
 
    } 
 
    break;

toggleshortcode divを押して、ハンドラを介してこのイベントを起動します。ショートコードを無効にし、有効にするための機能が正しく動作している:

$('#toggleshortcode').click(function() { 
 
    $.ajax({ 
 
     type: "POST", 
 
     url: "Handler.ashx?action=toggleshortcode", 
 
     success: function (output) { 
 
      console.log("toggleshortcode: " + output); 
 
      ShortCodeStatus(); 
 
     } 
 
    }); 
 
});

:ここ

case "toggleshortcode": 
 
    { 
 
     if (ShortCodeStatus() == true) 
 
     { 
 
     DisableShortCode(); 
 
     output = "false"; 
 
     } 
 
     else 
 
     { 
 
     EnableShortCode(); 
 
     output = "true"; 
 
     } 
 
    } 
 
    break;

は短いコードトグルのAJAX呼び出しです私は正しくURLを打つよ、私は正しい応答を得ている各機能しかし、ショートコードへの変更は起こっていないようです。

たとえば、ショートコードがオフの場合、ShortCodeStatus関数はfalseを返し、オフボタンを表示します。 Toggleshortcodeボタンをクリックすると、出力は正しいです(短いコードを有効にしたい)が正しいですが、成功時にShortCodeStatus関数が再び発生すると、falseと表示されます。 AJAX関数は正しいようですが、ハンドラのtoggleshortcodeがなぜ正しく起動しないのかわかりません。

ありがとうございました!

+0

どのようにしてShortCodeStatus()はAjaxリクエストから値を生成できますか? if文は、ajaxの応答を待つことはありません。私が間違っていないと、彼らは同期したままになり、あなたのajaxをバイパスします。 – trevster344

+0

返信いただきありがとうございます!アヤックスのリクエストが正常に機能しているように見えても、途中で欠けているようだ。 – rasantos

答えて

0

確認できる2件が表示されています。

まず、関数の正しい名前は「ShortCodeStatus()」である「toggleshortcode」、あなたが関数を呼び出しているためAJAX呼び出しに「)( ShortCodeStatusを取得」、そしてあなたの例のベース。

第2に、 'Handler.ashx?action = toggleshortcode'の呼び出しで、ステータス(trueまたはfalse)を返しています。SetShortCodeStatus(status)という名前のjavascript関数を作成し、 ajaxリクエスト 'Handler.ashx?action = shortcodestatus'と 'Handler.ashx?action = toggleshortcode'の両方の成功です。

function SetShortCodeStatus(status) { 
    $("#shortcodestatus").empty(); 
    if (status == "true") { 
     $("#shortcodestatus").text("ON"); 
     $("#shortcodestatus").addClass("btn btn-success"); 
    } 
    else { 
     $("#shortcodestatus").text("OFF"); 
     $("#shortcodestatus").addClass("btn btn-danger"); 
    } 
} 

function ShortCodeStatus() { 
    $.ajax({ 
     type: "GET", 
     url: "Handler.ashx?action=shortcodestatus", 
     success: function (output) { 
      console.log("getShortCodeStatus: " + output); 
      SetShortCodeStatus(output); 
     } 
    }); 
}; 


$('#toggleshortcode').click(function() { 
    $.ajax({ 
     type: "POST", 
     url: "Handler.ashx?action=toggleshortcode", 
     success: function (output) { 
      console.log("toggleshortcode: " + output); 
      SetShortCodeStatus(output); 
     } 
    }); 
}); 
+0

返信いただきありがとうございます! 'getShortCodeStatus()'と 'ShortCodeStatus()'は私の一部のタイプミスです。私はこのショットを与える – rasantos

+0

いいえサイコロ:(現在、サーバーには短いコードがあり、状態は適切にレンダリングされますが、コードを使用してtoggleshortcode divをクリックすると、テキストは「OFF」に変わりますが、適用されません。残念ながら、まだtoggleshortcodeを正しく打つことはありません。ハンドラのtoggleshortcode関数に渡すデータが不足している可能性があります – rasantos

関連する問題