2012-06-19 8 views
-3

Am получает ошибку, как, что, $ Аякса не работает

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#btnsubmit").click(function() { 
    $.ajax({ 
     type: "POST", 
     url: "loginform.aspx/getdataval", 
     data: "{'uname':'" + $("#TextBox1").val() + "','passwod':'" + $("#TextBox2").val() + "'}", 
     contentType: "application/json;charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
     alert("welcome"); 
     AjaxSucceeded(msg); 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
     alert("what is the problem") 
     } 

    }); 
    }); 
}); 

function AjaxSucceeded(result) { 
    alert(result.d); 
    var Emp = result.d; 
    $("#output").append('<p>' + Emp.Sname + ' ' + Emp.Sno + '</p>'); 
} 
</script> 

$ Аякса не функция, почему? Когда я запускаю этот скрипт, я получаю ошибку, он не работает, в чем проблема?

Благодаря

+0

Вы импортируете другую библиотеку, которая перезаписывает '$', после того, как был выполнен обратный вызов? Возможно, вы сможете решить проблему, определяющую обратный вызов как '$ (document) .ready (function ($) {...})' (т. Е. Принять его для ссылки на jQuery). –

+0

нет, нет никакой другой библиотеки –

+1

Работы отлично для меня: http://jsfiddle.net/antyrat/ZmYqh/ – antyrat

ответ

0

Вы можете иметь проблемы с одиночными/doule кавычки в строке данных в качестве стандарта JSON говорит двойные кавычки.
Вы также можете упростить contentType.
Я стараюсь упростить свое использование .d в asp.net, включив в него конвертер и сам ajax с помощью ajaxSetup, например: (Обратите внимание: использование такого конвертера, как это, работает в jQuery 1.5 вперед из-за этого синтаксиса. реорганизовать вне ajaxSetup, если вы предпочитаете, но я считаю, что это помогает мне, как я должен только сделать это один раз, когда у меня есть несколько вызовов AJAX)

$(document).ready(function() { 
    $.ajaxSetup({ 
     data: "{}", 
     dataType: "json", 
     type: "POST", 
     contentType: "application/json", 
     converters: { 
      "json jsond": function(msg) { 
       return msg.hasOwnProperty('d') ? msg.d : msg; 
      } 
     }, 
     error: function(xhr, textStatus, errorThrown) { 
      var errorMessage = "Ajax error: " + this.url 
       + " : " + textStatus + " : " + errorThrown 
       + " : " + xhr.statusText + " : " + xhr.status; 
      alert(errorMessage); 
      if (xhr.status != "0" || errorThrown != "abort") { 
       alert(errorMessage); 
      } 
     } 
    }); 
    $("#btnsubmit").click(function() { 
     var pString = '{"uname":"' 
      + $("#TextBox1").val() + '","passwod":"' 
      + $("#TextBox2").val() + '"}'; 
     $.ajax({ 
      url: "loginform.aspx/getdataval", 
      data: pString, 
      success: function(msg) { 
       alert("welcome"); 
       AjaxSucceeded(msg); 
      } 
     }); 
    }); 
}); 

// converter gives us the result instead of the .d here 
function AjaxSucceeded(result) { 
    alert(result); 
    var Emp = result; 
    $("#output").append('<p>' + Emp.Sname + ' ' + Emp.Sno + '</p>'); 
} 

EDIT:. по состоянию на JQuery 1.9, вы должны связать настройки АЯКС как такие как:

$(document).ajaxSetup({..more code 
Смежные вопросы