2015-04-25 25 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