Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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
yii、ajax、javascript不调用操作_Javascript_Jquery_Ajax_Yii - Fatal编程技术网

yii、ajax、javascript不调用操作

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'; }

我正试图用yii中的ajax将数据发布到一个动作中。目前,我正在硬编码的行动是真是假,看看我甚至张贴数据,它没有得到那里。 我似乎不知道我错在哪里。任何信息都会有帮助,谢谢

JS/AJAX如下:

    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>

请输入票号

票号#

问题似乎是由两方面引起的:

  • AJAX请求是异步的,这意味着调用
    $之后的JavaScript行会在AJAX请求返回之前执行AJAX
    ,或者很可能会执行。它成为一种竞赛条件

  • ticket\u code=$(“#ticket\u code”)
    是一个jQuery对象。然后将其作为请求
    data
    中的
    ticket\u code
    属性传递,jQuery正试图将其序列化为字符串。jQuery认为
    ticket\u code
    是一个HTMLInputElement(例如
    ),而实际上它是一个jQuery对象,因此无法将其序列化为字符串

  • 在AJAX请求返回浏览器后,您想做的任何事情都应该在
    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" );
            }
        });
    }