我的表单有一个名为txtMaterial的文本框,它有一个.txtmaterial类,另一个文本框叫做txtDescription。 当用户输入材料编号时,运行ajax查询并检查是否存在匹配项,如果匹配,则使用描述填充txtDescription文本框。
我有以下函数来搜索材质并以Coldfusion JSON格式返回数据:
$.ajaxSetup({ cache: false });
$("#frmCreateClaimLine tbody").on("change", ".txtmaterial", function(){
var row = $(this).closest("tr");
var material = row.find("input.txtmaterial").val();
$.ajax({
type: "GET",
url:"index.cfm?action=material.search_materials",
cache: false,
datatype: 'json',
data:{
material_id: material
},
success:function(result){
console.log(result);
}});
});
console.log的结果是:
{ “ROWCOUNT”:1, “列”:[ “TC_MATERIAL”, “TC_DESCRIPTION”, “TC_LANGUAGE”], “DATA”:{ “TC_MATERIAL”:[ “000000000000061234”], “TC_DESCRIPTION”:[“温度计“],”TC_LANGUAGE“:[”E“]}}
编辑: 这是我的疑问:
<cfquery name="qryGetMaterials" datasource="FR01CLDB" maxrows="100">
SELECT
TC_MATERIAL,
TC_DESCRIPTION,
TC_LANGUAGE
FROM
TBYE53_CSP_MATRL_LANGUAGE_DIM
WHERE
UPPER(TC_MATERIAL) = <cfqueryparam cfsqltype="cf_sql_varchar" value="#Trim(UCase(material_id))#">
AND
TC_LANGUAGE = <cfqueryparam cfsqltype="cf_sql_varchar" value="#UserLanguage#">
</cfquery>
<cfset theJSON = SerializeJSON(qryGetMaterials,true)>
<cfoutput>#theJSON#</cfoutput>
我无法弄清楚如何检查txtMaterial的值是否与返回的JSON数据中的值匹配,并在description字段中显示描述。
非常感谢任何帮助。
答案 0 :(得分:1)
假设您的查询执行完全匹配,则无需检查值。只需验证ROWCOUNT
是否大于零。如果是,您知道找到了匹配项。然后抓住第一行中的说明并更新文本字段
if (result.ROWCOUNT > 0) {
var descrip = result.DATA.TC_DESCRIPTION[0];
// ... update text field
}
另外,$.ajax电话中有一个小错字。它应该是dataType
(资本&#34; T&#34;),而不是datatype
。
答案 1 :(得分:0)
改变这个:
success:function(result){
console.log(result);
}
对此:
success:function(result){
if(material == result.DATA.TC_MATERIAL[0])
{
//PUT YOUR CODE HERE
}
}