2016-11-24 132 views
-1

我正在使用OutBrain API,我试图从服务器获取一些数据。Asp.net - 按钮不起作用

我做了一个简单的HTML页面,只需要营销人员ID并返回他的名字。

当我点击按钮 - 什么都没有发生。有人能告诉我我的问题是什么吗?

我正在使用visual studio 2013并使用MVC ASP.NET。

谢谢!

代码:

index.cshtml

@{ 
 
    ViewBag.Title = "Home Page"; 
 
} 
 
<br /> 
 
<div class="details"> 
 
    <label>Enter Marketer ID</label> 
 
    <input type="text" class="form-control" id="marketerID"> 
 
    <button type="button" class="btn btn-default" id="buttonB">OK</button> 
 
    <section class="details"> 
 
     <div class="name"> 
 
      <label>Name</label> 
 
      <label id="nameMarketer"></label> 
 
     </div> 
 
    </section> 
 
</div> 
 
<script src="~/Scripts/outBrain.js"></script>

outBrain.js

$("#buttonB").on('click', function() { 

function getMarketer() 
{ 
    $.ajax(
     { 
      url: "/home/GetOutBrainMarketers", 
      data: { id: $("marketerID").val() }, 
      success: function (result) { 
       var marketer = JSON.parse(result); 
       document.getElementById("nameMarketer").innerHTML = (marketer.name); 
      } 
     } 
     ) 
    } 
}); 

HomeController.cs

namespace OutBrain_test.Controllers 
{ 
    public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult About() 
    { 
     ViewBag.Message = "Your application description page."; 

     return View(); 
    } 

    public ActionResult Contact() 
    { 
     ViewBag.Message = "Your contact page."; 

     return View(); 
    } 

    public async Task<string> GetOutBrainMarketers(string ID) 
    { 
     var baseAddress = new Uri("https://api.outbrain.com/amplify/v0.1/marketers/" + ID); 

     using (var httpClient = new HttpClient { BaseAddress = baseAddress }) 
     { 

      httpClient.DefaultRequestHeaders.TryAddWithoutValidation("OB-TOKEN-V1", AuthorizeOutBrain().Result); 

      using (var response = await httpClient.GetAsync("marketers/"+ ID)) 
      { 

       string responseData = await response.Content.ReadAsStringAsync(); 

       return responseData; 
      } 

     } 

    } 

    public async Task<string> AuthorizeOutBrain() 
    { 

     var baseAddress = new Uri("https://api.outbrain.com/amplify/v0.1/login"); 

     using (var httpClient = new HttpClient { BaseAddress = baseAddress }) 
     { 

      httpClient.DefaultRequestHeaders.TryAddWithoutValidation("authorization", "BASIC BASE-64-ENC(my-username:my-pass)"); 

      using (var response = await httpClient.GetAsync("login")) 
      { 

       string responseData = await response.Content.ReadAsStringAsync(); 

       return responseData; 
      } 
     } 
    } 
} 

}

+0

你为什么换''按功能getMarketer' $ .ajax'?这是什么意思? –

+0

好的,好的,也许这就是我的问题,但多数民众赞成在吗? – Tal

+0

尝试打开它并再次单击。 –

回答

1

你用按钮HTML控件具有以下

<input type="button" class="btn btn-default" value="OK" id="buttonB" /> 
更换

使outBrain.js以下更改文件

function pageLoad() 
{ 
    $("#buttonB").on('click', function() { 
       getMarketer(); 
    }); 
} 

function getMarketer() 
{ 
$.ajax({ 
     url: "/home/GetOutBrainMarketers", 
     data: "{ id:'" + $("marketerID").val() +"'}", 
     success: function (result) { 
      var marketer = JSON.parse(result); 
      document.getElementById("nameMarketer").innerHTML = (marketer.name); 
     } 
     }); 
} 
+0

为什么?您也可以在按钮元素上注册点击处理程序。它不需要是输入元素。 – makzr

+0

我认为按钮控件可能会回发onclick事件,但这种行为是与输入类型=“提交”按钮,我的困惑抱歉。 –

2

您的按钮JavaScript单击处理程序除了定义函数外不会执行任何操作。您需要这样做:

$("#buttonB").on('click', function() { 
    $.ajax({   { 
      url: "/home/GetOutBrainMarketers", 
      data: { id: $("marketerID").val() }, 
      success: function (result) { 
       var marketer = JSON.parse(result); 
       document.getElementById("nameMarketer").innerHTML = (marketer.name); 
      } 
    }); 
}); 
+0

不工作... – Tal

0

区分大小写的问题。家居控制器API参数名称是“ID”和你的Ajax调用你给“ID”,在小的情况下,请改变它在大写和尝试

$(function() 
    { 
$("#buttonB").click(function() { 
    $.ajax({ 
     url: "/home/GetOutBrainMarketers", 
     data: { ID: $("marketerID").val() }, 
     success: function (result) { 
      var marketer = JSON.parse(result); 
      document.getElementById("nameMarketer").innerHTML =  (marketer.name); 
     } 
    }); 
}); 
}); 
+0

不工作以及 – Tal

+0

按F12并查看控制台中的任何错误? – Surajghosi

+0

它不工作它给我这个问题:Uncaught ReferenceError:$未定义 在http:// localhost:-----/Scripts/outBrain.js:1:1 – Tal