2013-08-21 36 views
1

我想通过JavaScript数组到C#代码后面使用Ajax回发。但是当我尝试这个时它没有工作。下面我附上了我的代码。任何人都可以帮助我吗?传递Javascript数组到C#代码后面使用Ajax POST

Test.aspx的

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="hotelbeds.test" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="utf-8" /> 
<title>jQuery UI Tooltip - Custom animation demo</title> 
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
<link rel="stylesheet" href="/resources/demos/style.css" /> 
<script type="text/javascript"> 
    function testbook(hotelcode) { 
     alert("clicked"); 
     //var values = {"1","2","3"}; 
     var mycars = new Array(); 
     mycars[0] = "Saab"; 
     mycars[1] = "Volvo"; 
     mycars[2] = "BMW"; 
     var theIds = JSON.stringify(mycars); 
     alert(theIds); 
     $.ajax({ 
      type: "POST", 
      url: "test.aspx/Done", 
      contentType: "application/json; charset=utf-8", 
      data: "{ 'ids':'"+ theIds +"'}", 
     dataType: "json", 
     success: function (result) { 
      alert('Yay! It worked!');    
     }, 
     error: function (result) { 
      alert('Oh no :('); 
     } 
     }); 


     return false; 

    } 

</script> 
</head> 
<body> 
    <form id="form1" runat="server"> 

    <div> 

    </div> 
    </form> 
</body> 

</html> 

代码文件

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Web.Services; 
using System.Configuration; 
using System.Drawing; 

namespace hotelbeds 
{ 

    public partial class test : System.Web.UI.Page 
    { 

     protected void Page_Load(object sender, EventArgs ea) 
     { 
      ImageButton testbtn = new ImageButton(); 
      testbtn.OnClientClick = "return testbook('15000')"; 
      form1.Controls.Add(testbtn); 

     } 

     [WebMethod] 
     public static void done(string[] ids) 
     { 
      String[] a = ids; 

     } 


    } 
} 

背后,当我改变的WebMethod下面这工作没有任何问题。但对我来说这不是有用的。

[WebMethod] 
     public static void done(string ids) 
     { 
      String a = ids; 

     } 

回答

0

错误JSON格式:

"{ 'ids':'"+ theIds +"'}" 

使用双引号。或者更好的做到这一点:

JSON.stringify({ ids: mycars }); 
0

试试这个

[WebMethod] 
    public static void done(List<string> ids) 
    { 
     String[] a = ids.ToArray(); 

    } 
0

试试这个。我已经成功地传递了JavaScript数组。唯一的限制是带有params关键字的对象必须是传递给web方法的最后一个参数。

http://msdn.microsoft.com/en-us/library/w5zay9db.aspx

[WebMethod] 
public static void PassArray(params object[] list) 
{ 
    int i = 0; 
    while (i < list.Length) 
    { 
     //do your thing here 
     i++ 
    } 
} 
相关问题