2014-06-21 2 views
0
<html> 
<script src="json.js";/> 
<script src = "jquery.js"/> 
<script type="text/javascript"> 
    function PopulateBlendSpecification() { 


    var data = new Object(); 
    data.Message = "message"; 
    alert(JSON.stringify(data)); 
    $.ajax({ 
     url: "Test.aspx/Test", 
     type: "POST", 
     contentType: "application/json;charset=utf-8", 
     dataType: "json", 
     data: JSON.stringify(data), 
     success: function (result) { 
      var listItems = []; 
      var blendSpecItems = JSON.parse(result.d); 

      for (var key in blendSpecItems) { 
       listItems.push('<option value="' + blendSpecItems[key].BlendSpecID + '">' + blendSpecItems[key].BlendName 
          + '</option>'); 
      } 

      var lBox = $('select[id$=lbBlendSpecs]'); 
      $(lBox).append(listItems.join('')); 
     } 
    }) 
} 

Test.aspx.cs아약스 정의되지 않은 오류 ASMX

 [WebMethod()] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public static string Test(string message) 
    { 
     return message; 
    } 

내가 하나 개의 프로젝트 내에서 이것을 시도 할 때 잘 작동을 호출 할 때. 나는 동일한 솔루션 내에서 별도의 prjoject로의 WebMethod를 이동할 때 는 그러나, 나는 아약스 오류 얻을 :

Error in: http://localhost/Test/MyWebService/Test.asmx/Test 
error: undefined 
type: ajaxError 
readystate: 4 
status: 500 

답변

0

WEBMETHOD는 코드 기능 sensitive.In 경우입니다을 공공 정적 문자열 테스트 (문자열 메시지)에서 매개 변수 메시지는 소문자이며 데이터를 전달해야합니다. 메시지 M은 대문자이므로 메서드는 코드 측에서 함수를 찾을 수 없습니다. 아래 같은 코드를 변경하는 경우

그래서 코드는이 오류의 경우라면

[WebMethod()] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public static string Test(string Message) 
    { 
     return Message; 
    } 
+0

내 포인트를 얻기 위해 게시물에서 변경되었을 수도 있습니다. 예제는 정상적으로 작동하며, ASMX 서비스로 옮길 때 실패합니다. –

0

when I move the webmethod into a separate prjoect within the same solution

하면, 웹 서비스 프로젝트로 이동하고 웹 프로젝트에서 소비하려고 했 잘 작동합니다 크로스 사이트 스크립팅 제한으로 인해 발생합니다. 그래도 별도의 프로젝트에 포함시켜야한다면 jsonp를 사용하고 jsonp의 친절한 응답을 반환해야합니다.

JSONP + ASMX @JSONP & ASMX Web Service에 대한 자세한 정보를 찾을 수 있습니다.

+0

예, 그리고 그 애비뉴를 시도해 보았습니다. 다시 살펴 보겠습니다. 아니면 WCF로 옮길 수도 있습니다.이 간단한 작업을 구현하기가 어렵다는 것을 믿을 수 없습니다. –

0

asmx 파일에 [System.Web.Script.Services.ScriptService] 헤더가 있습니다.

+0

아뇨, jQuery가 아약스 요청을하지 못하게 했으니까요. –

+0

실제로 기존의 메서드에 대해 knoe 스크립트를 만드는 데 사용됩니다. 그래서 추가하고 시도하십시오. – Satz