2011-01-03 8 views
0

以下のASPXページを実行するたびに、内部サーバーエラーが発生します。これは、私がウェブからコピーしたものです&この問題を引き起こしているのを把握しようとしてこれを元に取り除きました。jquery問題は常にエラーを返します

ASPXページ:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="x.aspx.cs" Inherits="x" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head id="Head1" runat="server"> 
     <title>Adventure Works</title> 

     <style type="text/css"> 
     .loading 
     { 
      background-image: url('ajax-load.gif'); 
      background-repeat: no-repeat; 
     } 
     </style> 

    <script src="/Scripts/jquery-1.3.2.js" type="text/javascript"></script> 

    <script type="text/javascript"> 

     function CallService() { 

      $('input[type=button]').attr('disabled', true); 
      $("#CustDetails").html(''); 
      $("#CustDetails").addClass("loading"); 
      $.ajax({ 
       type: "POST", 
       url: "GetVendor.asmx/GetVendorDetails", 
       data: "{'ID': " + $("#txt_id").val() + "}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: OnSuccess, 
       error: OnError 
      }); 

      function OnSuccess(data, status) { 
       alert('success'); 

       $("#CustDetails").removeClass("loading"); 
       // $("#textVendorNameLookup").html(data.d); 
       $('input[type=button]').attr('disabled', false); 
      } 

      function OnError(request, status, error, response) { 

       $("#CustDetails").removeClass("loading"); 
       $("#CustDetails").html(request.statusText); 
       $('input[type=button]').attr('disabled', false); 

       //$("#textVendorNameLookup").html(request.statusText); 
      } 

     } 
    </script> 


</head> 
<body> 
    <form id="DocForm" runat="server"> 
    <div> 

     <table style="width:31%;"> 
      <tr> 
       <td> 
        Enter Contact ID</td> 
       <td> 
        :</td> 
       <td> 
        <input id="txt_id" value="12" type="text" /><input id="btnGo" type="button" 
         value="Get Details" onclick ="CallService(); return false;"/></td> 
      </tr> 
      </table> 
    <br /> 
    <div id="CustDetails" style="width: 60%; height: 75px;"> 
    &nbsp; 
     </div> 
    </div> 
    </form> 
</body> 
</html> 

ASMXページ

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data; 

/// <summary> 
/// Summary description for AdvService 
/// </summary> 
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 

[System.Web.Script.Services.ScriptService] 
public class GetVendor : System.Web.Services.WebService { 

    public GetVendor() { 

     //Uncomment the following line if using designed components 
     //InitializeComponent(); 
    } 

    public int GetVendorDetails(int id) 
    { 
     return id; 

    } 
} 

CSページ。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

using Telerik.Web.UI; 
using System.Data; 
using System.Data.Sql; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Reflection; 


public partial class x : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

} 

AHIA、 ラリー...

+0

、それが動作するはずこれを試してみてください? – Vadim

+0

あなたは、そのasp.netページでJSONが正しく返されることはないことを知っていますか? JSONとして整形されていない数字だけです。そのためには、JSON.NET http://json.codeplex.comを使用してください。そして、 'GetVendorDetails'はWebMethodでさえありません! – balexandre

+0

@balexandre Json.netは必要ありません。私の例を一瞬で掲載しています。 – Tahbaza

答えて

1

私はあなたがちょうどそうよう[WebMethod]でこれらのメソッドを飾るために必要があると思う:

[System.Web.Script.Services.ScriptService] 
public class GetVendor : System.Web.Services.WebService { 

    [WebMethod] 
    public int GetVendorDetails(int id) 
    { 
     return id; 

    } 
} 
+0

chprpipr、私は[WebMethod]を追加しました。私は同じ結果を得ました。他のアイデアは?私はjQueryの初心者なので、@わらをつかんでいます。 – larryr

+0

@larryr:スクリーンショットやエラーのテキストを投稿できますか? – chprpipr

+0

実際のエラーはありません、 'Internal Server Error'が返されました。下記のアドバイスを受け取り、Chromeの 'Inspect Element'を使用して#txt_idのデータパラメータが設定されていないことがわかりました。 ":"無効なWebサービスコール、パラメータの値がありません: – larryr

0

あなたはAJAX呼び出しが呼び出されたときに(もしあれば)実行されているどのようなコードを参照するVS.netのデバッガを使用することができます。これは "内部サーバーエラー" ajaxの問題を開始するのに適しています。

次に、Firebug(Web開発用のFirefoxプラグイン)を使用していない場合、間違いなくajax呼び出しのデバッグに役立つはずです。より具体的にお問い合わせに具体的には、GetVendorDetailsメソッドを変更すると、このように役立つかどうかを確認してください。

using System.Web.Script.Services; 
using System.Web.Services; 
using System.Web.Script.Serialization; 

...

[WebMethod] 
[ScriptMethod(ResponseFormat=ResponseFormat.Json)] 
public string GetVendorDetails(string Id) { 
    // do your processing here to get your result 
    return new JavaScriptSerializer().Serialize(yourObjectInstanceToBeJsonSerialized); 
} 
+0

それでも、ASMX Serviceは常にXMLを出力していることを認識していますか?純粋なJSONを返すには、WCFをラッパー呼び出しのどちらかを使用します。 – balexandre

+2

@balexandre、ResponseFormat.Jsonデコレータに注意してください。私の$ .ajax jquery呼び出しにJsonを返します。十分に言って – Tahbaza

1

OKを、この1への答えは、「ブートには、頭 "...データペアを指定すると、データとWebサービスの名前は同じでなければなりません....すべてのヘルプ/提案の皆さん、ありがとうございます。 - あなたは、ページの読み込み上またはボタンをクリックしたときに、サーバーエラーを取得している場合は

1

function CallService() { 

    var CatID = {"ID": $('#txt_id').val()} 
    $('input[type=button]').attr('disabled', true); 
    $("#CustDetails").html(''); 
    $("#CustDetails").addClass("loading"); 
    $.ajax({ 
     type: "POST", 
     url: "AdvService.asmx/GetCtcDetails", 
     data: JSON.stringify(CatID),, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json",   

     success: OnSuccess, 
     error: OnError 
    }); 

} 
関連する問題