2

我正在使用Coldfusion8.

我收到一个带有项目编号(随机 35 个字符字符串)的 Ajax 请求,我需要将其写入/检索到数据库中。

问题是,当我只传递以下数字时:

 23456

Coldfusion 输出接收:

 23456.0

如果字符串包含任何字母,A12345则它可以正常工作。

一些代码(虽然这没有显示什么不起作用:

Javascript:

var btn = $(this).find('input'),
    putOnRack = btn.jqmData('index'),
    form = "",
    service = "../services/handler.cfc",
    method = "process",
    returnformat = "JSON",
    targetUrl = "",
    formdata = "form_submitted=store_selection&artikelnummer="+putOnRack+"&method="+method+"&returnformat="+returnformat;

    // pass to AJAX
    ajaxFormSubmit( form, service, formdata, targetUrl, successHandler, "no", "", returnformat, "" );

var ajaxFormSubmit = 
    function ( form, service, formdata, targetUrl, successHandler, dataHandler, errorHandler, returnformat, type ){
    $.ajax({
        async: false,
        type: type == "" ? "get" : type,
        url: service,
        data: formdata,    
        dataType: returnformat,
        success: function( objResponse ){}, 
        error: function (jqXHR, XMLHttpRequest, textStatus, errorThrown) {}

在 Coldfusion 中,我通过process它来验证和构建表单服务器端,然后我传递给我的数据库处理程序,它得到一个

 `LOCAL.form` 

包含所有传递信息的对象,所以我的项目编号将在LOCAL.form.artikelnummer

如果我输出这个:

 cfdump output="e:\dump.txt" label="catch" var="#LOCAL.form.artikelnummer#">

仅数字字符串被视为.0

问题
通过 AJAX 将参数传递给 Coldfusion 时,如何确保以 varchar 而不是数字结束?

4

3 回答 3

2

您可以使用NumberFormat( )。例子:

NumberFormat('123.0', '99999')// returns '123'

第二个参数是一个掩码,它决定了您的号码将如何显示。

于 2012-12-03T08:46:51.743 回答
1

<cfqueryparam ...>在您的块中使用cfquery并指定CFSQLType="CF_SQL_INTEGER". 这也将防止 SQL 注入攻击(ps 你不应该原始数据从最终用户传递到你的数据库中)。

推荐阅读:

  1. cfqueryparam (Coldfusion 8)
  2. 保护您的 ColdFusion 应用程序免受 SQL 注入攻击
于 2012-12-03T08:17:29.540 回答
0

您也可以在 CF 中使用 INT 函数。

int(123.456) <!--- returns 123 --->

INT 就像其他语言中的 floor(向下舍入)

INT()

在尝试使用 int 或 numberFormat 之前,您需要检查结果以确保它是否为数字,否则您将收到The value cannot be converted to a number错误消息。

<cfif isNumeric(yourValue)>
  <cfset yourValue = int(yourValue)>
</cfif>
于 2012-12-03T15:19:11.603 回答