2013-12-17 52 views
0

在我的網站中,我聲明一個數組在javascript中,並動態地插入它們的元素。所以現在,我想從我的C#代碼中使用該數組。我不想使用ajax將該元素髮送到Web服務......我只想使用C#事件,如OnClick並訪問在javascript中構建的數組。從javascript傳遞數組到後面的代碼 - C#

我搜索了一個答案,但我剛剛找到了oposite。 謝謝

+0

如果你想從客戶端到服務器,你將不得不在一定程度上實現Ajax。 –

+0

您必須將該序列化爲JSON的數組的值存儲在隱藏字段中。然後,您可以在點擊時訪問該隱藏字段,對其進行反序列化,並在服務器端對其進行處理。 –

+2

您需要了解_server-side_code和_client-side_code之間的區別。 – SLaks

回答

1

最簡單的方法是AJAX調用,我不明白你爲什麼要避免這種情況?

通過點擊按鈕進行AJAX調用。

這裏看一個演示: Ajax call is not calling to the server side and in httpfox shows error as "Error loading content (NS_ERROR_DOCUMENT_NOT_CACHED)" in ajax post call

例如:隱蔽你的數組JSON字符串,並在C#代碼中調用的Web客戶端。在這裏我有一個按鈕。按鈕單擊我想將我的GRIDVIEW數據發送到C#方法(網絡方法)。

您需要記住,在服務器端使用stringfy()方法, 發送json數據時,我們需要將參數定義爲對象。 沒有任何其他格式一樣串/ INT /喇嘛喇嘛..... 使用Scripts/jquery-1.8.3.min.js http://code.jquery.com/ui/1.10.3/jquery-ui.js

$('#btnResult').on('click', function() { 

     var mydata = []; 
     $("#<%=GridProjectDetails.ClientID %> tr").each(function() { 
      var myObject = new Object(); 
      var id = $(this).find("input[name*='ID']").val(); 
      var locationcode = $(this).find("input[name*='TextLocationCode']").val(); 
      var Location = $(this).find("input[name*='TextLocation']").val(); 
      myObject.id = id; 
      myObject.locationcode = locationcode; 
      myObject.Location = Location; 
      mydata.push(myObject); 
     }); 

     var myString = JSON.stringify({ details: JSON.stringify(mydata) }); 
     alert(myString); 
     var exportdata = myString; 

     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/ExportToExcel", 
      data: exportdata, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 
       $("#Result").text(data.d); 
      }, 
      error: function() { alert(arguments[2]); } 
     }); 
    }); 
}); 

和服務器端的方法應該是

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public static string ExportToExcel(object details) 
{ 
    return "Message : Success"; 
} 
+0

因爲我想提交一個具有uploadFile和數組的表單。所以,我不能/不知道如何使用一個同時接收文件和數組的Web方法,我決定創建一個事件點擊,這樣我就可以輕鬆訪問我的uploadFile控件。 – oteal

+0

那裏有什麼問題的人?文件上傳將完成它的任務。你需要做的是獲取路徑併爲你的excel/csv文件創建連接字符串來訪問。我希望你已經完成了所有這些東西。沒有問題。導出/導入使用ajax點擊按鈕 - 非常簡單。 –

0

這是做一個有點怪異的事情,但如果你必須這樣做,你可以通過創建一個表單來實現,在表單內部有一個隱藏的文本字段,並在提交時更新該字段的值時調用一個函數。

的標記:

<form id="yourForm" method="post" > 
    <input type="text" name="hiddenFieldName" id="hiddenFieldName" hidden="hidden" /> 
</form> 

的JavaScript:

void yourProcedure() { 
    var yourArray = ["Value1", "Value2", "Value3", "Value4"]; 
    document.getElementById('hiddenFieldName').value = yourArray.join(); 
    document.getElementById("yourForm").submit(); 
} 

然後,在服務器中,形式變量將包含 「值1,值,值3,值4」。

+0

如果數組值經常更改,您會做什麼? –

+0

什麼會改變數組值?如果服務器需要知道每一個變化,你不能避免HTTP POST或者獲取方法,所以我們想知道在服務器決定使用解決方案之前,服務器是如何處理數組值的.-) –

相關問題