我有一个功能,通过第三方服务处理销售,处理结果并返回状态为"成功"或"无效"的数组.此销售调用是使用应用于特定表单的gform_after_submission挂钩进行的.
我需要做的是将数组中的"Success"或"Invalid"结果存储为变量,我稍后可以使用gform_validation钩子将其传递给函数以验证或使信用卡字段无效.
我在函数中声明变量,如下所示:
function foo {
...code to sell product through API...
$status = $checkoutShoppingCartRequest['Result']['Status'];
}
Run Code Online (Sandbox Code Playgroud)
当我在函数中打印变量$ status时,它显示成功或无效.
这是我需要使用此变量的其他函数,传递给gform_validation,无论Success或Invalid result,都会每次都失败:
function MBvalidate( $validation_result ) {
$form = $validation_result['form'];
if ( $status !== "Success") {
$validation_result['is_valid'] = false;
foreach( $form['fields'] as &$field ) {
if ( $field->id == '34' ) {
$field->failed_validation = true;
$field->validation_message = 'Your credit card could not be processed.';
break;
}
}
}
//Assign modified $form object back to the validation result
$validation_result['form'] = $form;
return $validation_result; …Run Code Online (Sandbox Code Playgroud) 我们在这里有一个使用Wufoo表单和Wufoo jQuery API的站点.
我们从API中提取数据,对其进行排序,然后在页面上显示.当我们提交的数字高于当前前10名时,它应该在右侧实时更新,因为表单会重定向回自身.它这样做,但不是在IE中.相反,在提交表单和显示新数据之间似乎存在不必要的延迟.关闭浏览器并重新打开页面似乎有效,但这没有用.
这是我们正在使用的jQuery:
<script>
$.wufooAPI.getEntries({
"callback" : processEntries,
"formHash" : "x7x1x7",
"sortID" : "Field3",
"sortDirection" : "DESC",
});
function processEntries(data) {
$.each(data.Entries.slice(0, 10), function(entriesIndex, entriesObject) {
// Make sure this entry has all the required bits
if (entriesObject.Field1 && entriesObject.Field3) {
$("#attendeeTemplate").tmpl(entriesObject).appendTo("#people ul");
}
});
};
</script>
Run Code Online (Sandbox Code Playgroud)
这是模板代码:
<script id="attendeeTemplate" type="text/x-jquery-tmpl">
<li>
<h4>${Field1}</h4>
${Field3} minutes
</li>
</script>
Run Code Online (Sandbox Code Playgroud)
它在除IE8和9之外的所有浏览器中都能很好地工作,当它看起来像是在缓存数据而不是从服务器提取请求时.
有没有办法停止在IE中缓存jQuery?
最近有人提到我们通过表单提交将数据插入我们的SQL数据库的方法受到SQL注入攻击,并且需要一些建议来加强我们的安全性.
这是将表单数据插入数据库的代码:
<cfquery name="InsRegistrant" datasource="#application.Datasource#" dbtype="odbc">
INSERT INTO Schedule_Registrations(
schedule_id,
first_name,
last_name,
phone_number,
email,
guest,
list_type,
datetime_registered
)
VALUES(
#url.schedule_id#,
'#FORM.first_name#',
'#FORM.last_name#',
'#CleanPhoneNumber#',
'#FORM.email#',
#attendee.guest#,
<!--- Values for list types
0 = NEVER USE Will cause many many problems
1 = Main List
2 = Waiting List --->
#attendee.list_type#,
#createodbcdatetime(now())#
)
</cfquery>
Run Code Online (Sandbox Code Playgroud)
CleanPhoneNumber以这种方式设置:
<cfset CleanPhoneNumber = REReplace(form.phone_number, "[^0-9]", "", "ALL") />
Run Code Online (Sandbox Code Playgroud)
我被告知要使用,例如,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#form.phone_number#" />
Run Code Online (Sandbox Code Playgroud)
但我不确定要更换什么以及在哪里.当我用这样的值替换值时,我得到一个错误.
任何方向都会有所帮助..
我们有一个使用部分代码动态生成的计划:
<cfloop from="0" to="6" index="x">
<cfset thisDate = dateFormat(dateAdd("d",x,theDate),"yyyy-mm-dd")>
<cfoutput><tr><td colspan="4" class="date"><strong>#dateFormat(thisDate,"DDDD, M/D")#</strong></td></tr></cfoutput>
<cfif structKeyExists(dayData,thisDate)>
<cfif arrayLen(dayData[thisDate]) gt 0>
<cfloop from="1" to="#arrayLen(dayData[thisDate])#" index="y">
<cfoutput><tr>#dayData[thisDate][y]#</tr></cfoutput>
</cfloop>
<cfelse>
<cfoutput><tr><td colspan="4">There are no classes scheduled for this day</td></tr></cfoutput>
</cfif>
<cfelse>
<cfoutput><tr><td colspan="4">Schedule not available</td></tr></cfoutput>
</cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)
我要做的是动态插入一个锚(例如,<a name ="anchor">),具体取决于显示行中的日期是否是当前日期.所以我想要一个cfif,它将在日程表的当天一行显示锚点.目标是使用锚链接到此.
任何建议都非常感谢.
我们有一个表单,我们正在尝试验证姓氏字段的输入,以确保至少输入至少两个字符.这是我们使用的代码类型:
<cfif form.last_name is "S">
<cfset errors = errors & "<li>You must include your <b>complete</b> last name.</li>">
</cfif>
Run Code Online (Sandbox Code Playgroud)
关于我们如何确保姓氏字段有两个或更多字母的任何想法(不单独将每个字母作为单独的支票,如上所述).关于如何更有效地验证姓氏的其他想法也会有所帮助.
我们正在寻找一种方法来标准化输入表格中输入的电话号码,例如,(444)555-666.现在您可以输入任何格式,例如4445556666或444-555-6666,并且没有标准化.我希望在将数字输入数据库时将数字转换为前一种格式.
以下是表单的HTML代码:
<tr>
<td align="right">
<label for="phone_number">Telephone:</label>
</td>
<td>
<input type="text" name="phone_number" value="#form.phone_number#" />
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
这与所有其他数据一起使用cfquery INSERT INTO命令输入数据库.如果需要,我可以提供该代码.这是一个简短的版本:
INSERT INTO Schedule_Registrations(
phone_number
)
VALUES(
'#FORM.phone_number#'
)
Run Code Online (Sandbox Code Playgroud)
对此的任何想法将不胜感激.
我有以下ColdFusion代码,它从数据库获取信息并在主页上显示结果.这是cfquery代码:
<cfquery name="getSchedule" datasource="#APPLICATION.datasource#" dbtype="odbc">
SELECT * FROM SCHEDULE_Days SD
LEFT JOIN SCHEDULE_ScheduledClasses SSC ON SD.day_id = SSC.day_id
LEFT JOIN SCHEDULE_Classes SC ON SSC.class_id = SC.class_id
WHERE SD.day_date = #createODBCDate(now())# AND SSC.schedule_cancelled = 0
ORDER BY SSC.start_time
</cfquery>
Run Code Online (Sandbox Code Playgroud)
和输出代码:
<cfoutput>
<cfloop query="getSchedule">
<tr>
<td width="40"> </td>
<td width="74">#lcase(timeFormat(start_time,"h:mm tt"))#</td>
<td width="158">#class_name#</td>
</tr>
</cfloop>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
问题是,如果getSchedule中没有包含数据(即没有ScheduledClasses),则不显示任何内容.
我正在寻找一种方法来改变它,以便在没有数据显示的情况下,我可以指定一条消息和代码,以便在缺席时显示.