2017-04-06 119 views
0

我想從jQuery POST獲取數據字符串到aspx頁面。但沒有運氣。在aspx中從jQuery POST檢索數據

這是我的jQuery

​​

而在ASPX的開始,我有這個

string strName = Request.QueryString["name"]; 

可以看我的「名字」字符串在瀏覽器中通過調試發送。但我無法檢索它。 我來自傳統的ASP,並試圖學習ASP.net C#。我一直無法找到任何搜索結果解釋如何做到這一點。

幫助非常感謝=)

+0

參考的Asp.net本教程好文章jQuery的Ajax http://codepedia.info/jquery-ajax-json-example-asp-net-sql-database/ –

回答

2
function ShowCurrentTime() { 
$.ajax({ 
    type: "POST", 
    url: "CS.aspx/GetCurrentTime", 
    data: '{name: "' + $("#<%=txtUserName.ClientID%>")[0].value + '" }', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: OnSuccess, 
    failure: function(response) { 
     alert(response.d); 
    } 
}); 
} 

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

在C#-----

[System.Web.Services.WebMethod] 
public static string GetCurrentTime(string name){ 
return "Hello " + name + Environment.NewLine + "The Current Time is: " 
    + DateTime.Now.ToString(); 
} 
0

你應該使用WebService

[WebService, ScriptService] 
public class WebService1 : WebService 
{ 
    [WebMethod] 
    public string names(string name) 
    { 
     return "Hello " + name; 
    } 
} 

然後使用Javascript從客戶端調用它。

function namePerson() { 
    $.ajax({ 
     type: "POST", 
     url: "WebService1.asmx/names", 
     data: JSON.stringify({ name: "Anders" }), 
     contentType: "application/json; charset=utf-8", 
     beforeSend: function() { 
      $("#ViewContainer").html("<img src='loading.gif' />"); 
     }, 
     success: function (msg) { 
      $("#ViewContainer").html(msg.d); 
      alert(msg.d); 
     } 
    }); 
} 

請確保contentType: "application/json; charset=utf-8"存在,否則網絡服務將使用XML響應。

此外,您應該使用done而不是success

0

您正在錯誤地致電JQuery.AJAX。此行不正確。

url: "names.aspx", 

我覺得可能是你的頁面names.aspx您嘗試調用內的一些方法。想想你已經頁面像names.aspx和頁面內(隱藏文件的代碼),你係統會根據您提供的數據名稱的方法,因此該方法定義和聲明會像

[WebMethod] 
public void GetNames(string name) 
{ 
     ... 
} 

和你JQuery的AJAX調用的URL會像

url: "names.aspx/GetNames", 

希望它可以幫助您瞭解如何調用方法背後視圖的代碼JQuery.AJAX

+0

這工作,只是我想在另一個方法中使用該字符串。我用google搜索了一個虛空,它不能返回任何東西。我試圖讓它'公共靜態字符串'。然後我可以設置'返回strName;'但我不能在另一個方法中調用字符串。是的,我是一個新手試圖讓我的頭在此:) – sumpen

+0

是的,無效返回什麼,它取決於你想通過ajax調用該方法。你可以調用任何需要調用的方法,該方法不僅可以返回字符串,還可以返回Json和其他數據類型。 –

+0

ajax調用僅返回用戶上傳文件的頁面。我需要傳遞字符串'name',因爲我手動重命名上傳的文件並使用此字符串。我想做的所有事情都將它傳遞給我,並且可以在我上傳文件的方法中使用。我嘗試將'[WebMethod] public ..'移動到由上傳按鈕觸發的方法中。但是這造成了CS1513:'}'的預期錯誤。我在這裏發佈代碼:https://pastebin.com/XLkdcceW – sumpen

0

如果使用ASMX文件,以使web服務則是指
詳細的文章Simple Asp.net jQuery ajax Example, C# WebMethod with sql database

ELSE同一網頁的代碼隱藏做到這樣的下面寫

代碼隱藏: 在你的名字。aspx頁面添加此功能,使其靜態

[WebMethod] 
    public static string names(List<string> obj) 
    { 
      string result = string.Empty; 
      // code Logic 
      string n1=obj[0]; 
      string n2=obj[1]; 
      string n3=obj[2]; 


     return result; 
    } 

現在使用jQuery AJAX調用這個函數

JS代碼:

function namePerson() { 

     var aData = []; 
     aData[0] = "John"; 
     aData[1] = "Andrea"; 
     aData[1] = "Leslie"; 
     var jsonData = JSON.stringify({ obj: aData }); 

     $.ajax({ 
      type: "POST", 
      url:"names.aspx/names", 
      data: jsonData, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: OnSuccess_, 
      error: OnError_ 
     }); 

} 

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

function OnError_(error){ 
    alert(error); 
}