yii、ajax、javascript不调用操作
我正试图用yii中的ajax将数据发布到一个动作中。目前,我正在硬编码的行动是真是假,看看我甚至张贴数据,它没有得到那里。 我似乎不知道我错在哪里。任何信息都会有帮助,谢谢 JS/AJAX如下:yii、ajax、javascript不调用操作,javascript,jquery,ajax,yii,Javascript,Jquery,Ajax,Yii,我正试图用yii中的ajax将数据发布到一个动作中。目前,我正在硬编码的行动是真是假,看看我甚至张贴数据,它没有得到那里。 我似乎不知道我错在哪里。任何信息都会有帮助,谢谢 JS/AJAX如下: function printObject(o) { // alerts an object var out = ''; for (var p in o) { out += p + ': ' + o[p] + '\n'; }
function printObject(o) { // alerts an object
var out = '';
for (var p in o) {
out += p + ': ' + o[p] + '\n';
}
alert(out);
}
$(function() {
var dialog, form,
//select ticket_code, I don't know if this is working properly
ticket_code = $( "#ticket_code"),
allFields = $( [] ).add( ticket_code ),
tips = $( ".validateTips" );
function addTicket() {
var valid = false;
//alert ticket_code (however, it only alerts a long error message)
//saying that the length is 1, but not sure if that is correct
//see link at the end for error message.
printObject(ticket_code);
$.ajax({
type: "POST",
url: '<?php echo Yii::app()->createUrl('ticket/addTicket'); ?>',
data: {ticket_code : ticket_code},
success: function(){
alert('got here');
valid = true;
}
});
alert("after ajax");
if ( valid ) {
dialog.dialog( "close" );
alert('yay');
}
}
表格如下:
<div id="dialog-form" title="Add a Ticket">
<p class="validateTips">Please Enter Ticket Number</p>
<form>
<fieldset>
<label for="ticket_code">Ticket Code #</label>
<input type="text" name="ticket_code" id="ticket_code" placeholder="000-0000" class="text ui-widget-content ui-corner-all" title="You can find this on the bottom right hand side of your ticket">
<img src="/images/faq-ticket-codes.png" width="150";/>
<input type="submit" tabindex="-1" style="position:absolute; top:-1000px">
</fieldset>
</form>
请输入票号
票号#
问题似乎是由两方面引起的:
$之后的JavaScript行会在AJAX请求返回之前执行AJAX
,或者很可能会执行。它成为一种竞赛条件ticket\u code=$(“#ticket\u code”)
是一个jQuery对象。然后将其作为请求data
中的ticket\u code
属性传递,jQuery正试图将其序列化为字符串。jQuery认为ticket\u code
是一个HTMLInputElement(例如
),而实际上它是一个jQuery对象,因此无法将其序列化为字符串success
回调中完成。其次,在创建要在请求中传递的数据时,需要使用ticket\u code.val()
:
function addTicket() {
var valid = false;
$.ajax({
type: "POST",
url: '<?php echo Yii::app()->createUrl('ticket/addTicket'); ?>',
data: {ticket_code : ticket_code.val()},
success: function(){
// ticket_code is valid
dialog.dialog( "close" );
}
});
}
函数addTicket(){
var-valid=false;
$.ajax({
类型:“POST”,
url:“”,
数据:{ticket_code:ticket_code.val()},
成功:函数(){
//车票号码有效
dialog.dialog(“关闭”);
}
});
}
HTTP响应是什么?您必须打开浏览器调试工具(通常为F12或Ctrl+Shift+K)。TypeError:在未实现接口HTMLInputElement的对象上调用“Stepp”。value=jQuery.isFunction(值)?value():(value==null?“:value);这看起来像是JavaScript错误,而不是HTTP响应。你能用这个错误更新你的问题并提供一个堆栈跟踪吗?@GregBurghardt:这就是你所说的堆栈跟踪,还是在ajax中有办法做到这一点?你应该尽量避免在ajax函数体中使用硬代码url,使用Yii::app->createUrl('controller/action')独立于你的项目设置来获得准确的url
function addTicket() {
var valid = false;
$.ajax({
type: "POST",
url: '<?php echo Yii::app()->createUrl('ticket/addTicket'); ?>',
data: {ticket_code : ticket_code.val()},
success: function(){
// ticket_code is valid
dialog.dialog( "close" );
}
});
}