Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/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
ColdFusion ajax验证_Ajax_Coldfusion_Coldfusion 9 - Fatal编程技术网

ColdFusion ajax验证

ColdFusion ajax验证,ajax,coldfusion,coldfusion-9,Ajax,Coldfusion,Coldfusion 9,在cf9中,我有一个页面,我想检查db中是否存在字段值(通过ajax)。如果它不存在,我想停止处理(返回false)。一切都很好,只是我不知道如何将ajax调用的结果传递回主函数 请帮忙 <cfajaximport tags="cfmessagebox, cfwindow, cfajaxproxy"> <cfajaxproxy cfc="reqfunc" jsclassname="jsobj" /> <script language="JavaScript">

在cf9中,我有一个页面,我想检查db中是否存在字段值(通过ajax)。如果它不存在,我想停止处理(返回false)。一切都很好,只是我不知道如何将ajax调用的结果传递回主函数 请帮忙

<cfajaximport tags="cfmessagebox, cfwindow, cfajaxproxy">
<cfajaxproxy cfc="reqfunc" jsclassname="jsobj" />

<script language="JavaScript"> 

function checkRequired() {
    var testVal = document.getElementById('myField').value;
    return testAjax(testVal);
    /* more processing that should stop if ajaxCallBack returns false */
}
function testAjax(testVal) {
    var instance = new jsobj();
    instance.setCallbackHandler(ajaxCallBack);
    instance.checkProfile(testVal);
}

function ajaxCallBack(returns) { 
    alert(returns); 
// returns correctly "true" if value checks against db, "false" if it doesn't
// HOW DO I PASS THIS VALUE BACK TO checkRequired ???
}
</script>

<form>
<input type="text" name="myField" id="myField" value=""><p>
<input type="button" value="Check with Ajax" onClick="return checkRequired()">
</form>

函数checkRequired(){
var testVal=document.getElementById('myField')。值;
返回testAjax(testVal);
/*如果ajaxCallBack返回false,则应停止的更多处理*/
}
函数testAjax(testVal){
var instance=newjsobj();
setCallbackHandler(ajaxCallBack);
checkProfile(testVal);
}
函数ajaxCallBack(返回){
警报(返回);
//如果值检查db,则正确返回“true”,否则返回“false”
//如何将此值传递回checkRequired???
}


非常感谢

除非您将主函数构建为“等待”返回,否则无法将结果返回到该函数的实例;可以说,它已经退出了。使用cfajax可能会调整main函数以调用并等待,但简单的解决方案是让回调函数随后调用主函数,并将结果/返回的存在视为是否处理或调用ajax的标志

function checkRequired(return) {
  if(return != null) {
    /* more processing */
  } else {
    testAjax(testVal);
  }
}

function ajaxCB(return) {
  checkRequired(return);
}

我可能会进行更多的重构,但你应该明白这一点。

这确实是一种黑客行为,不是我想要的,而是为了它的价值:如果我把这一节放在函数的最后,回调在主函数中崩溃,它就会工作

function checkRequired() {
  var testVal = document.getElementById('myField').value;
  var instance = new jsobj();
  var r = instance.setCallbackHandler(
    function(returns) {
      if(returns == 1)  {
        document.getElementById('testForm').submit();
      } else { alert("Something wrong"); }
    }
  );
  instance.checkProfile(testVal);
}

我已经将这3个函数折叠为一个函数,但仍然是一样的,内部函数不会将“return false”传递给主函数,不管“returns”函数的值是多少,表单仍然会“submit”~~~~~函数checkRequired(){var testVal=document.getElementById('myField')。value;var instance=new jsobj();var r=instance.setCallbackHandler(函数(返回){if(返回==0){return false;}}});instance.checkProfile(testVal);document.getElementById('testForm')。submit();}谢谢william,你的函数也能工作,而且它使函数可以使用任何新的变量。仍然必须将它放在函数的最顶端~~~~~函数checkRequired(r){if(typeof r!=“undefined”){if(r==1){document.getElementById('testForm').submit();}else{alert(“Something short”);return false;}else{var testVal=document.getElementById('myField').value;testjax(testVal);}函数testjax(testVal){var instance=new jsobj();instance.setCallbackHandler(ajaxCallBack);instance.checkProfile(testVal);}函数ajaxCallBack(返回){checkRequired(返回);}