2012-04-26 3 views
0

Мне нужно вызвать файл обработчика (ashx) из jQuery, чтобы получить некоторые данные во время выполнения. Моя функция JQuery выглядит следующим образом:Вызов обработчика из jQuery не работает

  var pID = 3; 
     var tID = 6; 

     $("#Button1").click(function() { 
      var urlToHandler = "Controller/TestHandler.ashx"; 
      $.ajax({ 
       type: "POST", 
       url: urlToHandler, 
       data: "{'pID':'" + pID + "', 'tID':'" + tID + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
        alert(msg); 
       } 
      }); 
     }); 

Мой код обработчика:

<%@ WebHandler Language="C#" Class="TestHandler" %> 

using System; 
using System.Web; 

public class TestHandler : IHttpHandler 
{  
    public void ProcessRequest (HttpContext context) 
    { 
     String pID = context.Request.Params["pID"]; 
     String tID = context.Request.Params["tID"]; 
     context.Response.ContentType = "text/plain"; 
     context.Response.Write(pID + " " + tID); 
    } 

    public bool IsReusable 
    { 
     get { 
      return false; 
     } 
    } 
} 

Проблема является выполнение кода не доходит до кода обработчика. Я могу вызывать файлы других веб-форм (aspx) из одной и той же функции jQuery из того же каталога, где находится файл обработчика. Таким образом, это не проблема.

Я новичок в этой концепции файла обработчика. Я много искал Google, но не смог найти ничего плохого в моем коде.

+0

Что говорит Скрипач? (Или firebug?) – aquinas

+0

У него нет никаких ошибок. –

+0

Итак, он возвращает 200, успех? – aquinas

ответ

1

Я думаю, что путь передачи данных json обработчику неверен.

Также убедитесь, что путь к обработчику правильный и введите строку в консоль в обработчике, чтобы проверить, вызвано ли оно вызовом. Попробуйте этот код из

$("#Button1").click(function(){ 

     $.ajax({ 
      type: "POST", 
      url: "/Controller/TestHandler.ashx", 
      data: {pID:pID, tID:tID}, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       alert(msg); 
      }, 
      error: function(){ 
       alert("Error"); 
      } 

     }); 
    }); 
+0

Путь верный, я могу вызвать другие файлы веб-форм (aspx) из того же каталога. @DRAKO Я пытаюсь с исправлением данных json, которые вы предложили. –

2

Он работал после изменения, как я проходивший данные JS (как это было предложено @DRAKO) и удаления CONTENTTYPE из Аякса после вызова обратно. Также исправлен путь.

$("#Button1").click(function() { 
    var urlToHandler = "TestHandler.ashx"; 
    $.ajax({ 
     type: "POST", 
     url: urlToHandler, 
     data: { pID: pID, tID: tID }, 
     dataType: "json", 
     success: function(msg) { 
      //do something with the msg here... 
     } 
    }); 
}); 
+0

тоже работал для меня –