我有一个使用Jquery验证的表单,它运行得很好,如果我在同一页面上使用我的验证代码和AJAX,那么即使AJAX也能正常工作。
现在我做了什么,我创建了一个名为validation.js的文件,我在其中添加了带有AJAX的验证代码,并在我的视图页面中添加了如下所示的脚本。
<script type="text/javascript" src="<?php echo base_url() ?>js/validation.js"></script>
然后我点击了提交按钮它检查了我的验证,即使它也转到了我输入的AJAX URL,但这次我没有输出。
我正在浏览器的网络标签中找到我的网址
<?php echo base_url("index.php/user_control/admin_submit_from"); ?>
我正在使用sublime文本编辑器如果我在同一页面上使用了上面的URL,那么base_url
颜色显示为蓝色,如果我在validaion.js中使用,则颜色显示为黄色。
以上网址不在validation.js文件中。你能帮帮我吗?
使用AJAX验证我的Jquery
$(document).ready(function() {
$("form[name='admin_form_submit']").validate({
rules: {
firstname: {
required: true,
minlength:3,
maxlength:50
},
lastname: {
required: true,
minlength:3,
maxlength:50
},
role:{
required: true
},
inst_name:{
required: true
}
},
submitHandler: function(form) {
//// form.submit();
$.ajax({
type: 'post',
url: '<?php echo base_url("index.php/user_control/admin_submit_from"); ?>',
data: $('form[name="admin_form_submit"]').serialize(),
success: function (data) {
alert(data);
}
});
}
})
});
答案 0 :(得分:0)
你不能在js文件中执行php
使用url创建一个全局js变量,并在你的js文件中引用
的index.php
<script>
var url = '<?php echo base_url("index.php/user_control/admin_submit_from"); ?>';
</script>
validation.js
$.ajax({
type: 'post',
url: url,
data: $('form[name="admin_form_submit"]').serialize(),
success: function (data) {
alert(data);
}
});
}
答案 1 :(得分:0)
代码在第一种方法中工作的原因是因为它包含在PHP
文件中。在php文件中,你可以嵌入HTML
,CSS
,JS
,这就是为什么当你写这样的东西时:
<script src='<?php echo $something; ?>'></script>
回显$something
的值。
另一方面,你不能在javascript文件中嵌入php代码。整个代码将被视为string
,以及解析它的原因。
所以要解决你问题(如果你仍然想把你的js放在一个单独的文件中),其中一种方法是添加一个隐藏的input
与你想要的在您的表单中使用值,并使用js来获取它。
以您的形式:
<input type="hidden" name="my_url" id="my_url" value="<?php echo base_url("index.php/user_control/admin_submit_from"); ?>">
然后你从你的js文件中定位它,如下所示:
var myUrl = $('#my_url').val();
然后将您的ajax
更新为:
$.ajax({
// other objects and properties
url: myUrl,
});