Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择字段未显示下拉列表值_Javascript_Ajax_Mvvm_Knockout.js_Viewmodel - Fatal编程技术网

Javascript 选择字段未显示下拉列表值

Javascript 选择字段未显示下拉列表值,javascript,ajax,mvvm,knockout.js,viewmodel,Javascript,Ajax,Mvvm,Knockout.js,Viewmodel,谁能帮帮我吗,这两天我一直在忙。我不熟悉Knockoutjs/viewmodel。我试图理解如何将数据绑定到dropdownlist。下拉值需要通过API从DB中提取,具体取决于在另一个字段中输入的值(这基本上是API返回下拉值的输入参数)。返回数据的API如下所示 [HttpPost] public JsonResult GetGInfo(string sNumber) { try { DSRepository dsr =

谁能帮帮我吗,这两天我一直在忙。我不熟悉Knockoutjs/viewmodel。我试图理解如何将数据绑定到dropdownlist。下拉值需要通过API从DB中提取,具体取决于在另一个字段中输入的值(这基本上是API返回下拉值的输入参数)。返回数据的API如下所示

[HttpPost]
    public JsonResult GetGInfo(string sNumber)
    {
        try
        {
            DSRepository dsr = new DSRepository();
            List<String> gTypeList = dsr.GetDDInfo(sNumber);
            if (gTypeList != null)
                return Json(gTypeList);
            else
                return null;    
        }
        catch (Exception e)
        {
            return null;
        }}
<div class="form-group required">
<label for="SNumber" class="control-label">SNumber:</label>
<input type="number" id="SNumber" class="form-control" data-bind="event: {change: getGTypes}, value: sNumber">
</div>

<div class="form-group required">
<label for="GType" class="control-label">GType</label>
<select id="GType" name="GType" class="form-control" data-bind="options: getGTypes, value: gType, optionsCaption: 'Select'"></select>
</div>
</div>
[HttpPost]
公共JsonResult GetGInfo(字符串sNumber)
{
尝试
{
DSRepository dsr=新的DSRepository();
List gTypeList=dsr.GetDDInfo(sNumber);
if(gTypeList!=null)
返回Json(gTypeList);
其他的
返回null;
}
捕获(例外e)
{
返回null;
}}
下面是两个字段

 // this value should be passed in to the API to retrieve the dropdown list 
 self.sNumber= ko.observable().extend({ required: { params: true, message: "Required!" } }); 
 //Dropdown list field 
 self.gType= ko.observable().extend({ required: true });

  //function for making a call to the API 
  self.getGTypes = function (data, event) {
    $.ajax({
        url: '/REQ/GetGInfo',
        type: 'POST',
        data: {
            sNumber: self.sNumber()
        },
        success: function (response) {
            if (response.length < 1)
                console.log("Record retrieved successfully");
        },
        error: function (errorThrown) {
            console.log("Error retrieving the record");
        }
    })
   }; 
//应将此值传递给API以检索下拉列表
self.sNumber=ko.observable().extend({required:{params:true,message:“required!”});
//下拉列表字段
self.gType=ko.observable().extend({required:true});
//用于调用API的函数
self.getGTypes=函数(数据、事件){
$.ajax({
url:“/REQ/GetGInfo”,
键入:“POST”,
数据:{
sNumber:self.sNumber()
},
成功:功能(响应){
如果(响应长度<1)
console.log(“成功检索记录”);
},
错误:函数(错误抛出){
log(“检索记录时出错”);
}
})
}; 
用户界面如下所示

[HttpPost]
    public JsonResult GetGInfo(string sNumber)
    {
        try
        {
            DSRepository dsr = new DSRepository();
            List<String> gTypeList = dsr.GetDDInfo(sNumber);
            if (gTypeList != null)
                return Json(gTypeList);
            else
                return null;    
        }
        catch (Exception e)
        {
            return null;
        }}
<div class="form-group required">
<label for="SNumber" class="control-label">SNumber:</label>
<input type="number" id="SNumber" class="form-control" data-bind="event: {change: getGTypes}, value: sNumber">
</div>

<div class="form-group required">
<label for="GType" class="control-label">GType</label>
<select id="GType" name="GType" class="form-control" data-bind="options: getGTypes, value: gType, optionsCaption: 'Select'"></select>
</div>
</div>

成员:
G型
因此,当在SNumber字段中输入值时,调用
getGenetipes
,我看到数据通过调试从API返回,对于我输入的数字,我看到下面的数据
gTypeList
从API返回

但在下拉列表中,我什么也看不到

请帮助我这里缺少的内容完全卡住了

您需要实际保存从viewmodel上的API接收的下拉列表值。您不能只执行API调用,然后期望Knockout神奇地理解它需要使用(异步)响应数据来填充选择列表

所以基本上,你需要这样做:

// this value should be passed in to the API to retrieve the dropdown list 
self.sNumber = ko.observable().extend({ required: { params: true, message: "Required!" } }); 
//Dropdown list field 
self.gType = ko.observable().extend({ required: true });
// Dropdown list values
self.gTypes = ko.observableArray();

//function for making a call to the API 
self.getGTypes = function (data, event) {
    $.ajax({
        url: '/REQ/GetGInfo',
        type: 'POST',
        data: {
            sNumber: self.sNumber()
        },
        success: function (response) {
            self.gTypes(response);
        },
        error: function (errorThrown) {
            console.log("Error retrieving the record");
        }
    })
}; 

<select id="GType" name="GType" class="form-control" data-bind="
    options: gTypes,
    value: gType,
    optionsCaption: 'Select'"></select>
//应将此值传递给API以检索下拉列表
self.sNumber=ko.observable().extend({required:{params:true,message:“required!”});
//下拉列表字段
self.gType=ko.observable().extend({required:true});
//下拉列表值
self.gTypes=ko.observearray();
//用于调用API的函数
self.getGTypes=函数(数据、事件){
$.ajax({
url:“/REQ/GetGInfo”,
键入:“POST”,
数据:{
sNumber:self.sNumber()
},
成功:功能(响应){
自我类型(应答);
},
错误:函数(错误抛出){
log(“检索记录时出错”);
}
})
}; 

请注意,我不知道响应是什么样子的,所以这可能不是100%正确,但我希望您能理解。

非常感谢,过去两天我一直在处理这个问题。我没有意识到我错过了这样一个用来存储回复的组织活动