2015-11-03 102 views
1

我无法检索$ .ajax在我的c#页面上传递的值。jqplot - 通过ajax将变量传递给C#页面

我正在使用jqplot,我想传递两条信息。一个是存储在一个名为“hidden_​​plateid”和第二条信息的隐藏字段从下拉框称为“SampleNumberList”

这是隐藏字段

<input type="text" name="hidden_plateID" id="hidden_plateID" hidden="hidden" runat="server" /> 

这是下拉框:

<select name="SampleNumberList" class="DropDownBox_editjob" id="SampleNumberList"> 
    <option value="--SELECT--"></option> 
    <option value="001r">001r</option> 
    <option value="002r">002r</option> 
</select> 

我只是那么说,每次有人从下拉框中选择,获取并从DB获得的信息,并绘制图表

$('#SampleNumberList').on('change', function (e) { 

      var ajaxDataRenderer = function (url, plot, options) { 
       var ret = null; 
       $.ajax({ 
        data: { 
         PlateID2: options.PlateID, 
         SampleID2: options.SampleID, 
        }, 
        async: false, 
        url: url, 
        dataType: "json", 
        success: function (data) { 
         alert(data); 
         ret = data; 
        }, 
        error: function (xhr, err) { 
         alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status); 
         alert("responseText: " + xhr.responseText); 
        } 
       }); 
       return ret 
      }; 

      var jsonurl = "SpectraData.aspx"; 

      var plot2 = $.jqplot('chartdiv', jsonurl, { 
       title: "AMIRA", 
       dataRenderer: ajaxDataRenderer, 
       dataRendererOptions: { 
        unusedOptionalUrl: jsonurl, PlateID: $('#hidden_plateID').val(), SampleID: $('#SampleNumberList').val() 
       } 
      }); 
     }); 

我使用的Request.QueryString,试图找回在C#文件中的值,但到目前为止,我什么也没得到

if (Request.QueryString["PlateID2"] != null) 
{ 
    PlateID = Request.QueryString["PlateID2"].ToString(); 
} 

if (Request.QueryString["SampleID2"] != null) 
{ 
    SampleID = Request.QueryString["SampleID2"].ToString(); 
} 

回答

0

你正试图从一个查询字符串检索值,但要传递的参数作为json。 为了将它们作为查询字符串参数进行检索,您需要将它们传递给您的url。

$.ajax({ 
        async: false, 
        url: url + "?PlateID2=" + options.PlateID + "&SampleID2=" + options.SampleID + "", 
        dataType: "json", 
        success: function (data) { 
         alert(data); 
         ret = data; 
        }, 
        error: function (xhr, err) { 
         alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status); 
         alert("responseText: " + xhr.responseText); 
        } 
       }); 

实际上,正确的做法是将params作为json字符串传递并截取后面的代码。

$.ajax({ 
           url: url/Somemethod, 
           type: 'POST', 
           dataType: 'json', 
            data: "{'PlateID2':'" + options.PlateID + "','SampleID2':'" + options.SampleID + "'}", 
           success: function (data) { 
          alert(data); 
          ret = data; 
         }, 
           error: function (xhr, err) { 
          alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status); 
          alert("responseText: " + xhr.responseText); 
         } 
          }); 

在您的代码隐藏:

[WebMethod] 
    public static void Somemethod(string PlateID2,string SampleID2) 
    { 

    } 
+0

我已经试过,但我得到的C#页面上的值“未定义” – Saj

+0

我找到了原因。我需要使用$('#<%= hidden_​​PlateID.ClientID%>')调用PlateID。val() – Saj

+0

请参阅更新后的部分。使用json对象传递数据而不是request.query字符串 – DinoMyte