我已經在一個aspx的ASP按鈕:ASP.NET Web表單 - 調用C#方法與AJAX
<asp:Button id="btnReport2" name="btnReport2" runat="server" class="gradientBlueBtn" Text="Show Report" OnClientClick="Alert();" ToolTip="Report"/>
正如你所看到的,我打電話給它使用AJAX調用C#中的javascript函數方法。我這樣做:
<script>
function Alert()
{
$.ajax({
type: "POST",
url: "Selection.aspx/GetReport",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function()
{
alert('success');
},
error: function()
{
alert('error');
}
});
}
</script>
事情是,我總是收到錯誤信息,當我點擊按鈕。有什麼我做錯了嗎?
編輯:C#方法。我已經設置了一個斷點來查看該方法是否被調用,但顯然不是。
public void GetReport()
{
AddFilters();
decimal localCurrencyRate;
App_Data.BulkImportDSTableAdapters.ClientsTableAdapter tadptClients = new App_Data.BulkImportDSTableAdapters.ClientsTableAdapter();
string legalEntityID = string.Empty;
if (txtSrcSys.Text != null)
{
DataTable dtSSYS = tadptClients.GetLegalEntityID(txtSrcSys.Text);
if (dtSSYS.Rows.Count > 0)
{
legalEntityID = Convert.ToString(dtSSYS.Rows[0][0]);
}
}
DateTime dtInvoiceFrom = DateTime.ParseExact(txtInvoiceFrom.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
DateTime dtInvoiceTo = DateTime.ParseExact(txtInvoiceTo.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
string strInvoiceFrom = String.Format("{0:yyyyMMdd}", dtInvoiceFrom);
string strInvoiceTo = String.Format("{0:yyyyMMdd}", dtInvoiceTo);
string localCurrency = dbcon.getLocalCurrency(legalEntityID);
DataSet localCurrencyDs = dbcon.getCurrencyRate(localCurrency, strInvoiceFrom);
if (Convert.ToDecimal(localCurrencyDs.Tables[0].Rows[0]["rate"]) == 0)
localCurrencyRate = Convert.ToDecimal(localCurrencyDs.Tables[0].Rows[1]["rate"]);
else
localCurrencyRate = Convert.ToDecimal(localCurrencyDs.Tables[0].Rows[0]["rate"]);
string fileQuery = string.Empty;
if (cbxExpYes.Checked == true && cbxExpNo.Checked == false)
{
fileQuery = File.ReadAllText(Server.MapPath("~/temp/Query.txt")).Replace("{1}", "XFORM_AREA.IMPORT_GE_MAIN_V15BIS m");
fileQuery = fileQuery.Replace(":param1", localCurrencyRate.ToString());
fileQuery = fileQuery.Replace("{0}", qb.getFilters().Replace("P.", "m."));
}
if (cbxExpYes.Checked == false && cbxExpNo.Checked == true)
{
fileQuery = File.ReadAllText(Server.MapPath("~/temp/Query.txt")).Replace("{1}", "PREIMPORT_GE_MAIN m");
fileQuery = fileQuery.Replace(":param1", localCurrencyRate.ToString());
fileQuery = fileQuery.Replace("{0}", qb.getFilters().Replace("P.", "m."));
}
if (cbxExpYes.Checked == true && cbxExpNo.Checked == true)
{
fileQuery = File.ReadAllText(Server.MapPath("~/temp/QueryUnion.txt"));
fileQuery = fileQuery.Replace("{ParamValues}", "pg.DEFVAL ");
fileQuery = fileQuery.Replace("{ParamTab}", "ref_var_def pg");
fileQuery = fileQuery.Replace("{ParamCond}", "pg.NM = 'WL_REPORTING_CUR'");
fileQuery = fileQuery.Replace("{0}", qb.getFilters().Replace("P.", "m."));
fileQuery = fileQuery.Replace("{1}", qb.getFilters().Replace("P.", "i."));
}
ASPxPivotGrid1.OptionsFilter.ShowOnlyAvailableItems = true;
int indexTravFullName = 0;
int indexEndTravFullName = 0;
string paramToRemove = string.Empty;
indexTravFullName = fileQuery.IndexOf("AND PR.ST_TRAVELLER_FULL_NAME LIKE");
if (indexTravFullName > 0)
{
indexEndTravFullName = fileQuery.Substring(indexTravFullName).IndexOf("AND", 3);
paramToRemove = fileQuery.Substring(indexTravFullName, indexEndTravFullName);
fileQuery = fileQuery.Replace(paramToRemove, string.Empty);
}
if (!string.IsNullOrEmpty(fileQuery))
{
DataSet dsTravels = new DataSet();
oCmd.CommandText = fileQuery;
oCmd.CommandType = CommandType.Text;
oCmd.Connection = oConn;
odpter.SelectCommand = oCmd;
odpter.SelectCommand.Parameters.Add(":pSourceSystem", txtSrcSys.Text);
odpter.SelectCommand.Parameters.Add(":pInvoiceFrom", strInvoiceFrom);
odpter.SelectCommand.Parameters.Add(":pInvoiceTo", strInvoiceTo);
if (!String.IsNullOrWhiteSpace(txtCustomNr.Text))
{
odpter.SelectCommand.Parameters.Add(":pCustomerNr", txtCustomNr.Text);
}
if (!String.IsNullOrWhiteSpace(txtIATA.Text))
{
odpter.SelectCommand.Parameters.Add(":Iata", txtIATA.Text);
}
if (!String.IsNullOrWhiteSpace(txtCurrCode.Text))
{
odpter.SelectCommand.Parameters.Add(":CurrCode", txtCurrCode.Text);
}
if (!String.IsNullOrWhiteSpace(txtInvoiceNrFrom.Text))
{
odpter.SelectCommand.Parameters.Add(":pInvoiceNrFrom", txtInvoiceNrFrom.Text);
}
if (!String.IsNullOrWhiteSpace(txtInvoiceNrTo.Text))
{
odpter.SelectCommand.Parameters.Add(":pInvoiceNrTo", txtInvoiceNrTo.Text);
}
if (!String.IsNullOrWhiteSpace(txtDossierNrFrom.Text))
{
odpter.SelectCommand.Parameters.Add(":pDossierNrFrom", txtInvoiceNrFrom.Text);
}
if (!String.IsNullOrWhiteSpace(txtDossierNrFrom.Text))
{
odpter.SelectCommand.Parameters.Add(":pDossierNrTo", txtInvoiceNrFrom.Text);
}
if (!String.IsNullOrWhiteSpace(txtTravellerName.Text))
{
odpter.SelectCommand.Parameters.Add(":pTravellerName", txtTravellerName.Text);
}
if (chbxSale.Checked)
{
odpter.SelectCommand.Parameters.Add(":pSale", "SA");
}
if (chbxRefund.Checked)
{
odpter.SelectCommand.Parameters.Add(":pRefund", "RE");
}
if (hfTravelWith.Value.Contains("chbxairs"))
{
odpter.SelectCommand.Parameters.Add(":pProductAir", "7");
}
if (hfTravelWith.Value.Contains("chbxhotels"))
{
odpter.SelectCommand.Parameters.Add(":pProductHotel", "3");
}
if (hfTravelWith.Value.Contains("chbxcars"))
{
odpter.SelectCommand.Parameters.Add(":pProductCar", "1");
}
if (hfTravelWith.Value.Contains("chbxrails"))
{
odpter.SelectCommand.Parameters.Add(":pProductRail", "6");
}
if (hfTravelWith.Value.Contains("chbxmisc"))
{
odpter.SelectCommand.Parameters.Add(":pProductMisc", "9");
}
if (!String.IsNullOrWhiteSpace(txtBatchNr.Text))
{
odpter.SelectCommand.Parameters.Add(":pBatchNr", txtBatchNr.Text);
}
odpter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
odpter.Fill(dsTravels, "ReportTab");
int count = dsTravels.Tables[0].Rows.Count;
DataTable dt = dsTravels.Tables[0];
if (dt.Rows.Count > 0)
{
ASPxPivotGrid1.DataSource = dt;
ASPxPivotGrid1.DataBind();
Session["dtReport"] = dt;
//ASPxPivotGrid1.Prefilter.CriteriaString = "[" + "" + "]";
}
}
}
添加錯誤消息,將是有益的。 –
請爲您的#GetReport方法添加c#代碼 –
請參閱http://stackoverflow.com/questions/27917255/c-sharp-web-method-is-not-calling-in-javascript/27917333#27917333 – Mairaj