2017-03-13 46 views
1

這必須是一個非常簡單的答案,但我無法看到我出錯的地方。將Bool返回給AJAX請求

只需輸入一個測試AJAX請求與C#代碼後面。我無法讓c#返回true/false語句,或者我無法讓AJAX將其識別爲true/false。

[WebMethod] 
    public static bool testme(int testnumber) 
    { 
     if (testnumber < 12) 
     { 
      return true;    } 
     else 
     { 

      return false; 
       } 

    } 

AJAX:

<script> 
     $(document).ready(function() { 
      $('#test').click(function() { 
       $.ajax({ 
        type: "post", 
        url: "WebForm1/testme", 
        data: { testnumber: 13 }, 
        contentType: "application/json; charset=utf-8", 
        datatype: "json", 
        success: function (data) { 
         if (data) { 
          console.log("true"); 
         } 
         else { 
          console.log("false"); 
         } 
        }, 
        Error:function(error){ 
         console.log("error"); 
        } 
       }); 
      }); 
     }) 


    </script> 

按鈕:

<input type="button" id="test" value="click me"/> 

的是的console.log顯示真實的,即使我進入數大於12,它應該會返回「假的「布爾從C#方法。

console.log is returning a full page render see picture

+0

可能數據類型需要是bool而不是JSON? – Rinktacular

+0

nope,那只是停止了整個AJAX請求,還有其他想法? –

回答

0

因此,原來這是relativly簡單,但不知道爲什麼它需要做的事情。我從https://forums.asp.net/t/2023743.aspx?Ajax+Webmethod+not+firing+得到了幫助

我需要更改 //settings.AutoRedirectMode = RedirectMode.Permanent; 至

settings.AutoRedirectMode = RedirectMode.Off;

我的RouteConfig.cs然後一切正常。

如果有人知道爲什麼添加System.Web.Services時不會自動更改;或者這意味着我很想知道,無論如何,現在所有的工作都很棒。

0

if(data)檢查檢查感實性,data將是一個對象,所以來看看它的屬性,你可以找到C#的結果。如果你不熟悉JS的真實性,可以查看它以獲得更好的描述:但是如果每個變量有一個有效值,如果它是空的或未定義的(或0或''),則認爲它是真的不會被認爲是真實的,並且會失敗布爾檢查。

+1

那麼代碼將用於檢查屬性,我試過數據。屬性,但我找不到超載方法?任何幫助? –

+0

我傾向於只使用'console.log(data);'在開發者工具中你應該可以檢查它 –

+0

這個問題,是console.log(data)給我開發者工具中的完整頁腳本控制檯,而不是單一的結果 –

0

當您從WebMethod獲得響應時,您必須使用.d來引用該值。你目前的代碼只是檢查你是否得到了迴應,並且很可能總是評估爲真。

<script> 
     $(document).ready(function() { 
      $('#test').click(function() { 
       $.ajax({ 
        type: "post", 
        url: "WebForm1/testme", 
        data: { testnumber: 13 }, 
        contentType: "application/json; charset=utf-8", 
        datatype: "json", 
        success: function (data) { 
         if (data.d) { 
          console.log("true"); 
         } 
         else { 
          console.log("false"); 
         } 
        }, 
        Error:function(error){ 
         console.log("error"); 
        } 
       }); 
      }); 
     }) 
    </script> 

一個指針,以及可以幫助你弄清楚到底是怎麼回事會爲你的瀏覽器開發者工具(F-12),一看就知道是從服務器回來的響應格式使用的網絡選項卡。它不只是返回真或假,它返回d: trued: false因此我提到的變化。

+0

? (你可以發佈你看到的回報) –

+0

是否通過開發人員工具返回了適當的值,但仍然無法正常工作,現在得到錯誤返回信息 –

+0

通過開發工具,如果我console.log(data.d)我越來越undefined,如果我console.log(數據)我得到控制檯上的整個頁面腳本 –

0

每當我必須使用Ajax,我從函數JSON對象返回。 對於e.g:

return Json(new { result = true }); 

和AJAX:

<script> 
     $(document).ready(function() { 
      $('#test').click(function() { 
       $.ajax({ 
        type: "post", 
        url: "WebForm1/testme", 
        data: { testnumber: 13 }, 
        contentType: "application/json; charset=utf-8", 
        datatype: "json", 
        success: function (data) { 
         if (data.result === true) { 
          console.log("true"); 
         } 
         else { 
          console.log("false"); 
         } 
        }, 
        Error:function(error){ 
         console.log("error"); 
        } 
       }); 
      }); 
     }) 


    </script>