2016-07-10 25 views
0

Bitte den Code aus meiner MVC-Ansicht sehen:AJAX gibt undefined zurück

<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script> 
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script> 

    <script type="text/javascript"> 
     function GetMessage() { 
      $.ajax({ 
       type: "GET", 
       url: "http://localhost/webapi/api/Values/", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: OnSuccess(), 
       async: false, 
       failure: function (response) { 
        alert('there was an error creating the disposal decision records') 
       } 
      }); 

      function OnSuccess() { 
       return function (response) { 
        alert(response.d); 
       } 
      } 
     } 
     GetMessage(); 
    </script> 

und den Code aus: http://localhost/webapi/api/Values/:

public Person Get() 
     { 
      Person p = new Person(); 
      p.id = 1; 
      p.name = "Bert"; 
      p.age = 31 
      return p; 
     } 

im Ereignishandler Erfolg; undefined wird aufgefordert. Warum?

+0

Was ist "response.d"? – Nic

+1

@Nic, siehe bitte: http://stackoverflow.com/questions/4215386/jquery-ajax-json-response-returns-key-d – w0051977

+0

Probieren Sie 'console.log (Antwort)' und sehen, was es enthält. Alert ist nicht sehr gut zum Debuggen. – JJJ

Antwort

-1

Versuchen Sie folgendes:

var OnSuccess = function(response) { 
     alert(response.d); 
    } 

und in der Ajax-Aufruf:

success: OnSuccess, 
0

Jedes Mal, wenn Sie mit WebAPI oder jeder Rest Web-Service arbeiten, können Sie es in Browser testen müssen, bevor Sie es tun mit jquery-ajax

Zuerst müssen Sie versuchen, http://localhost/webapi/api/Values/ im Browser (um sicher zu sein, dass Ihre Server-Seite in Ordnung ist, da es Ihren jquery Ajax-Code nicht benötigt). Wahrscheinlich würden Sie das gewünschte Ergebnis nicht bekommen.


nun in jedem Fall müssen Sie einige Fehlerbehebungen mit Ajax-Request gehen Sie bitte folgende

<script type="text/javascript"> 
    var OnSuccess = function(data) 
    { 
     alert("this is success"); // just check if this works 
     alert(data); // just check if this works 
     if(data && data.d) 
      alert(data.d); 
    } 

    function GetMessage() { 
     $.ajax({ 
      type: "GET", 
      url: "http://localhost/webapi/api/Values/", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: OnSuccess, 
      async: false, 
      error:function(er){ 
       alert(er.responseText); 
      }     
     }); 

     function OnSuccess() { 
      return function (response) { 
       alert(response.d); 
      } 
     } 
    } 
    GetMessage(); 
</script> 

Wenn http://localhost/webapi/api/Values/ Werke in Browser für Sie dann Ajax auch in Ordnung nach oben Behebungen tun müssen. Aber wenn das nicht der Fall ist, dann müssen Sie folgendes beachten:

Es scheint, dass Ihre Serverseite noch nicht OK ist. Ihre Server-Seite Controller muss Code haben wie

[RoutePrefix("api/Values")] 
public class PersonssController : ApiController 
{ 
    // GET api/Values 
    [Route("")] 
    public Person Get() { 
    { 
     Person p = new Person(); 
     p.id = 1; 
     p.name = "Bert"; 
     p.age = 31 
     return p; 
    }  
} 

Nach oben Änderungen in Ihrem WebAPI Controller, jetzt sollten Sie in der Lage sein http://localhost/webapi/api/Values/ adaequat in Browser zu finden, und wie Sie geändert haben auch Ihre jquery Anfrage, wie ich oben gesagt, so muss alles in Ordnung sein