-3

そのようなエラーが発生しています、$ajaxが機能していません

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

$ ajaxは関数ではないのはなぜですか?このスクリプトを実行すると、エラーが発生しますが、実行されません。問題は何ですか?

ありがとう

4

1 に答える 1

0

JSON標準では二重引用符が指定されているため、データ文字列の単一引用符/二重引用符に問題がある可能性があります。
contentTypeを簡略化することもできます。
私は、次のようにajaxSetupを使用してコンバーターとajax自体を含めることにより、asp.netでの.dの使用を簡素化する傾向があります:(このようなコンバーターを使用すると、構文が原因でjQuery1.5以降で機能することに注意してください。リファクタリングしてください。必要に応じてajaxSetupを使用しますが、複数のajax呼び出しがある場合は、1回だけ実行する必要があるため、これは役に立ちます。)

$(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>');
}

編集:jQuery 1.9以降、ajaxセットアップを次のようにバインドする必要があります。

 $(document).ajaxSetup({..more code
于 2012-06-19T12:15:27.480 に答える