2015-04-25 27 views
0

嘿,我正在制作一个简单的web表单,将其作为产品详细信息插入网页。我试图插入使用ajax调用。没有ajax它的作品..但$ .ajax没有调用我的代码后面的静态方法,不知道wat是问题。下面的代码:在asp.net中调用使用ajax代码的方法

$(document).ready(function() { 
    $("#submit").click(function() { 
     var cat = document.getElementById('DropDownList1').value; 
     var nm = document.getElementById('name').value; 
     var cde = document.getElementById('code').value; 
     var dt = document.getElementById('dt').value; 

     var price = document.getElementById('price').value; 
     var f3 = document.getElementById('ty').innerHTML; 

     alert("you clicked " + cat + " - " + nm + "-" + cde + "-" + dt + 
       "-" + price + "-" + f3 + "-"); 

     //////////////uptil here alert gives the right value. 

     $.ajax({ 
      method: "POST", 
      contentType: "application/json", 
      url: "home.aspx/ins", 
      dataType: "json", 
      data: "{'Name :' + nm + 'code :' + cde +'category :'+ cat + 
       'date :'+ dt +'price :'+ pr +'img_name :' + f3}", 
      //data:"{}", 
      //async: false, 
      success: function (response) { 
       alert("User has been added successfully."); 
       window.location.reload(); 
      } 
     }); 
    }) 
}); 

//////////////////////////////// here is the code behind method: 

[System.Web.Services.WebMethod] 
public static void ins(string Name,string code,string category, DateTime date, 
    int price,string img_name) 
{ 
    productclass pc = new productclass(); 
    pc.Pr_name = Name; 
    pc.Code = code; 
    pc.Category = category; 
    pc.Expiry = date; 
    pc.Price = price; 
    pc.Pr_image = img_name; 

    dalinsert di = new dalinsert(); 
    bool flag = di.insert(pc); 
} 
+0

可能是您的数据输入问题。尝试将您的输入构建为javascript对象,然后将其转换为带有JSON.stringify(变量)的字符串,以便安全和减少对您的工作。看起来更接近我认为是你的问题。你试图在一个字符串内连接。在做+之前,你没有终止你的“”。无论如何,JSON.stringify()通常更清晰。 – Taplar

+0

oka会尝试它...但输入工作正常,因为我已经获得警报值。 oka thanks – Kam

+0

您的提醒可以正常工作,因为您在那里正确连接(“某事”+“其他”)。但在你的数据中你正在做。 “'东西'+变量+'别的东西'”。字符串包围有“”,而不是“”在这种情况下,它必须是(“'某事'”+“'别的'”)。因此,基本上就像现在在数据部分中那样,+被视为文字而不是操作符。 – Taplar

回答

0

通过webmethod将数据传递到ajax的正确方式就是这样。

var params = "{'Name' :'" + nm + "', 'code' :'" + cde + "', 'category' :'" + cat + "', 'date' : '" + dt + ", 'price' :'" + pr + "' , 'img_name' :'" + f3 + "' }" //声明这上面$.ajax...

data: params, //在$.ajax...以上使用。

+0

后的内部变量很有帮助。请告诉我如何访问静态方法后面的代码中的params。像wat应该是方法参数,以及如何访问params.thanks中的参数 – Kam

+0

@Kam它与您使用的/声明中的问题相同,在代码后面没有对param的更改。 –

0

我相信这个问题是在你的数据在传递:

data: "{'Name :' + nm + 'code :' + cde +'category :'+ cat +'date :'+ dt +'price :'+ pr +'img_name :' + f3}" 

我看到有两个可能的问题。首先,你的'+'被视为文字,因为它们被永远不会逃脱的双引号包围。你正在努力实现,我相信是:

data: "{'Name :'"+ nm +"'code :'"+ cde +"'category :'"+ cat +"'date :'"+ dt +"'price :'"+ pr +"'img_name :'"+ f3 +"}" 

但是我相信,JSON将是畸形仍然存在潜在的问题。 json字符串的预期语法,至少包含字符串变量,是'{“key1”:“value1”,“key2”:“value2”}'。

更好的方式来确保您的权利,并保存自己的工作是使用JSON.stringify为你做的工作。

var temp = {}; 
temp.Name = nm; 
temp.code = cde; 
temp.category = cat; 
temp.date = dt; 
temp.price = pr; 
temp.img_name = f3; 
var data = JSON.stringify(temp); 
+0

谢谢......有一件事。如何在静态方法后面的代码中访问这个临时变量..我无法访问它如何。 – Kam

+0

我对asp不熟悉,所以不确定如何在后端访问该输入。一旦向后端发出请求,它应该与对服务器发出的任何其他请求一样。你可以用同样的方式访问它。在那个时候不会有'temp'变量,只是提供给 – Taplar