2017-02-09 4 views
0

Я попытался сделать вызов ajax для публикации на веб-методе, всякий раз, когда я отправляю его, он просто возвращает всю страницу aspx. Вот Ajax вызов:Ajax Post, возвращающий полную страницу aspx

var $jq =jQuery.noConflict(); 
    $jq.ajax({ 
     type: "POST", 
     url: "Default2.aspx/sortxml", 
    data: xmlDoc, 

     complete: function (xhr, status) { 
    error: function (xhr, status, text) { 
       console.log(xhr.status); 
       console.log(xhr.text); 
       console.log(xhr.responseText); 
      } 

     if (status === 'error' || !xhr.responseText) { 

      alert(xhr.responseText); 
      document.getElementById("response").value = xhr.responseText; 
     } 
     else { 
      var data = xhr.responseText; 
      //alert(data); 
      document.getElementById("response").value = data; 

     } 
    } 

и здесь является WebMethod, я упростил это массово это сидит на коде позади страницы под названием «Default2.aspx»

[System.Web.Services.WebMethod()] 
    public static string sortxml() 
{ 
return ("hi");} 

Форма она тянет данные здесь:

<form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager2" runat="server"></asp:ScriptManager> 

<button onclick="cmdButtonSend();" type="button" >Call Component Engine</button> 
    <br /><p> 
<asp:TextBox id="TextInput" runat="server" TextMode="MultiLine" Wrap="false" ></asp:TextBox> 

     </p> 
    <asp:TextBox id="response" runat="server" TextMode="MultiLine" Wrap="true" ></asp:TextBox> 
    <p class ="tim"> Set Timeout 
    <asp:TextBox id="timer1" runat="server" TextMode="MultiLine" Wrap="false" ></asp:TextBox></p> 

      </form> 

Когда я запустить Ajax называют это возвращает целую страницу ASPX формы включен.

Почему это?

EDIT: вызов Ajax является частью метода JavaScript, который называется частью cmdButtonSend(); метод.

+0

привет, некоторые советы i f вы хотите, чтобы люди помогали: 1) Исправить блоки кода - вы * можете * потратить достаточно времени на вопрос, чтобы исправить, например, отступы, если вы ожидаете, что другие люди проведут время, помогая вам. 2) Покажите, как все держится вместе. Я не вижу, как javascript получает вызов. Это 'cmdButtonSend();'. – user1429080

+0

Немного изменил код и дал понять, как все подойдет вместе – jkb114

+0

add contentType и dataType properties to $ .ajax call. Также, если вы отправляете данные, у вас должны быть параметры в вашем веб-методе, чтобы принимать эти данные. –

ответ

0

Итак, я понял, что вызывает проблемы. Я должен был сделать это так, чтобы он знал, что он отправляет Json и ожидает его обратно. Это потребовало незначительных изменений в вызове ajax и веб-методе.

var $jq =jQuery.noConflict(); 
    $jq.ajax({ 
     type: "POST", 
     url: "Default2.aspx/sortxml", 
     data: "{XMLDOC: 'xmlDoc'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     complete: function (xhr, status) { 
    error: function (xhr, status, text) { 
       console.log(xhr.status); 
       console.log(xhr.text); 
       console.log(xhr.responseText); 
      } 

     if (status === 'error' || !xhr.responseText) { 

      alert(xhr.responseText); 
      document.getElementById("response").value = xhr.responseText; 
     } 
     else { 
      var data = xhr.responseText; 
      //alert(data); 
      document.getElementById("response").value = data; 

     } 
    } 

уведомления введения

contentType: "application/json; charset=utf-8", 
     dataType: "json", 

, а затем пришлось изменить раздел данных

data: "{XMLDOC: 'xmlDoc'}", 

В WebMethod я должен был только затем включить новую переменную XMLDOC и она работает

[System.Web.Services.WebMethod()] 
    public static string sortxml(string XMLDOC) 
    { 

return ("hi");} 
Смежные вопросы