【发布时间】:2014-09-25 20:01:01
【问题描述】:
我有一个表单,它有一个名为 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,"COLUMNS":["TC_MATERIAL","TC_DESCRIPTION","TC_LANGUAGE"],"DATA":{"TC_MATERIAL":["000000000000061234"],"TC_DESCRIPTION":["THERMOMETER "],"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 数据中的值匹配,并在描述字段中显示描述。
任何帮助将不胜感激。
【问题讨论】:
-
如果您执行
JSON.parse(result)将使结果成为更易于操作的对象。但是在冷融合方面,如果您使用serializejson()并将第二个值更改为 true 我相信会更容易一些。它使它更容易使用。然后您将拥有一个与 CF Query 对象非常相似的 JS 对象。然后,您可以遍历 javascript 中的行。 help.adobe.com/livedocs/coldfusion/8/htmldocs/… -
嗨,我已经使用 serializejson() 序列化了输出。
-
编辑:假设你的查询是 exact 匹配,你不需要检查值。只需验证
ROWCOUNT是> 0。如果是,您就知道找到了匹配项。然后从result.DATA.TC_DESCRIPTION[0]中获取值。此外,您在 ajax 调用中有错字。应该是:dataType: 'json' -
是的,但是试试
serializeJSON(query,true),那么对象的组织方式就不同了,如果我没记错的话,在 Javscript 中使用起来会更容易。 -
@Leeish - 查看示例结果,我相信他们已经在这样做了 :)
标签: jquery ajax json coldfusion