2016-11-24 6 views
-1

Я работаю с API OutBrain и пытаюсь получить некоторые данные с сервера.Asp.net - кнопка не работает

Я сделал простую HTML-страницу, которая просто берет идентификатор маркетолога и возвращает его имя.

Когда я нажимаю кнопку, ничего не происходит. Может кто-нибудь сказать мне, что моя проблема?

Я использую визуальную студию 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

Почему вы заключаете '$ .ajax' на' функции getMarketer'? Что это значит? –

+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

с регистрацией проблем. домашний контроллер имя параметра АФИ «ID» и ваш Ajax вызова вы даете «идентификатор» в небольшом случае, пожалуйста, измените его в верхний регистр и попробовать

$(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

его не работает, дайте мне эту проблему: Неподготовлено ReferenceError: $ не определено по адресу http: // localhost: -----/Scripts/outBrain.js: 1: 1 – Tal

Смежные вопросы