javascript - $.ajax({}) 能否在js函數(shù)中調(diào)用?
問(wèn)題描述
1.想做一個(gè)問(wèn)卷調(diào)查。 頁(yè)面中有多個(gè)題目,每個(gè)題目下有多個(gè)選項(xiàng),最后有一個(gè)提交按鈕,提交時(shí)判斷用戶是否登錄。題目和選項(xiàng)都是在jsp頁(yè)面中通過(guò)$.ajax從后臺(tái)動(dòng)態(tài)獲取以html形式顯示在前臺(tái)。 現(xiàn)在提交時(shí)需要獲取選擇的項(xiàng)和題目將其存入后臺(tái)的數(shù)據(jù)庫(kù)中,以便后臺(tái)統(tǒng)計(jì)。
2.form表單
<form name='myform' method='post'> <p class='sub730'><p id='rightTitle'> <span>有獎(jiǎng)?wù){(diào)查</span></p><p id='contentp'> <p class='newsLeftLayoutOp sceneRightLayout'><p class='newsDetailContent'> <h2>${iyInvestigate.title}</h2> <p class='newsDetailConMsg'><span>發(fā)布時(shí)間:</span> <span>${iyInvestigate.createTime}</span> <span>活動(dòng)結(jié)束時(shí)間:</span><span>${iyInvestigate.endtime}</span> </p> <p><span>${iyInvestigate.summary}</span> </p> <p class='test_content_nr'></p> <p class='col-lg-9 col-lg-offset-3'> <a href='javascript:void(0)' onclick='submitAnswer();'>提交</a> </p></p> </p></p> </p></p></form>
動(dòng)態(tài)加載題目和選項(xiàng)
<script type='text/javascript'> $(document).ready(function(){ $.ajax({ type : 'post', dataType : 'json', url : '${ctx}/website/yjdc/investigate/findInvestigateOptionByPage.action', data : {'id':’${iyInvestigate.id}’}, success: function(rec){ var root = '${ctx}';var optionlist = rec.investigateOpList;var opHTML = ’<ul>’;for(var i = 0;i<optionlist.length;i++){ var option = optionlist[i];opHTML += ’<li name='optionTitle' id='qu_0_’+i+’'>’; opHTML += ’<p name='pOptionTitle' id='p_0_’+i+’'>’+ option.subject +’</p>’;opHTML += ’<p class='test_content_nr_main'>’; opHTML += ’<ul>’; var deoption = option.options; var deoptionsArr = new Array(); deoptionsArr = deoption.split('|'); //選項(xiàng)按照|分割開(kāi) for (var j = 0; j<deoptionsArr.length;j++){ opHTML += ’<li name='liSelect' class='option'>’;opHTML += ’<input name='answer’+i+’' type='radio'>’+deoptionsArr[j];//opHTML += ’<label for='0_answer_’+i+’_option_’+j+’'>’+’<p style='display: inline;'>’+deoptionsArr[j]+’</p>’+’</label>’;opHTML += ’</li>’; } opHTML += ’</ul>’; opHTML += ’</p>’; opHTML += ’</li>’;}opHTML += ’</ul>’;$(’#optionp’).html(opHTML); }}) });</script>
提交函數(shù)submitAnswer()
function submitAnswer(){ var userid = '${sessionScope.user.id}'; if(userid == ’’) {alert('未登錄,跳轉(zhuǎn)登錄頁(yè)面!');var dt = new Date();var urlRoot = window.location.pathname;var urlParameter = window.location.search;var url = urlRoot + urlParameter;window.location.href = 'http://www.cgvv.com.cn/wenda/${pageContext.request.contextPath}/web/index/toLogin.action?url='+url+'&dt='+dt.getTime(); } else { var k = document.getElementById(’sub’).innerText; var investigateTitle = '${iyInvestigate.title}'; var indvestigateID = '${iyInvestigate.id}'; //獲取同一個(gè)主題活動(dòng)下的題目集合 var subjectTitleCountObj = document.getElementsByName('pOptionTitle'); //var optionSelectCount = document.getElementsByName('liSelect').length;//獲取每一道題目以及相應(yīng)的選項(xiàng) for (var k=0;k < subjectTitleCountObj.length;k++){//ids = optionTitleCountObj[k].id;//存儲(chǔ)題目var subject = $('#p_0_'+ k).text();//var val_ = $(’input[type='radio'][name='answer’+k+’']:checked’).val();//存儲(chǔ)選中的項(xiàng)var selectItem = ''; var radios = document.getElementsByName('answer'+k);for (r = 0; r < radios.length;r++) { if (radios[r].checked) {selectItem = radios[r].nextSibling.data; }};$.ajax({ type : 'post', dataType : 'json', url : '${ctx}/website/yjdc/investigate/submitAnswer.action', data : {'investigateTitle': ${iyInvestigate.title},'investigateID':${iyInvestigate.id},'subjectOp':subject,'selectItemOp':selectItem,'userid':${sessionScope.user.id}}, success : function(rec){}});// for (var j=0; j<optionSelectCount;j++){// var select = $('#0_answer_'+k+'_option_'+j).text();// $('input:radio:checked').val();// } } }}</script>
3.現(xiàn)在的問(wèn)題是在 function submitAnswer() {} 中加$.ajax({})根本進(jìn)不了js函數(shù)submitAnswer。 去掉$.ajax({})才可以執(zhí)行submitAnswer函數(shù)。
請(qǐng)各位大神指教。
問(wèn)題解答
回答1:將ajax中data參數(shù)下的值用單引號(hào)新起來(lái)就好了,見(jiàn)如下代碼data : {'investigateTitle': ’${iyInvestigate.title}’,'investigateID':’${iyInvestigate.id}’,'subjectOp':’subject’,'selectItemOp':’selectItem’,'userid':’${sessionScope.user.id}’},
回答2:寫個(gè) console.log 看看函數(shù)到底有沒(méi)有進(jìn)去。
再者,你這個(gè)寫法:
<a href='javascript:void(0)' onclick='submitAnswer();'>提交</a>
為什么在 js 文件中綁定事件呢:
html
<a href='http://www.cgvv.com.cn/wenda/4466.html#'>提交</a>
js
$(’#sub’).click(function(){ submitAnswer();});回答3:
你把你的submitAnswer()放到$(document).ready(function(){})試試
相關(guān)文章:
1. objective-c - ios百度地圖定位問(wèn)題2. html - css 如何添加這種邊框?3. javascript - 求助這種功能有什么好點(diǎn)的插件?4. html5 - 如何解決bootstrap打開(kāi)模態(tài)modal窗口引起頁(yè)面抖動(dòng)?5. javascript - 求助關(guān)于js正則問(wèn)題6. javascript - node.js服務(wù)端渲染解疑7. html5 - rudy編譯sass的時(shí)候有中文報(bào)錯(cuò)8. javascript - 關(guān)于定時(shí)器 與 防止連續(xù)點(diǎn)擊 問(wèn)題9. 為何 localStorage、sessionStorage 屬于html5的范疇,但是為何 IE8卻支持?10. 微信開(kāi)放平臺(tái) - Android調(diào)用微信分享不顯示
