gpt4 book ai didi

javascript - yii,ajax,javascript 不调用操作

转载 作者:行者123 更新时间:2023-12-03 12:09:06 25 4
gpt4 key购买 nike

我正在尝试在 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');
}
}

下面的actionAddTicket:

public function actionAddTicket(){
if(isset($_POST['ticket_code'])){
return true;
}
return false;
}

下面的表单 View :

<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>

the alerted object value for ticket_code

最佳答案

该问题似乎是由两件事引起的:

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

  2. 线路 ticket_code = $( "#ticket_code")是一个 jQuery 对象。然后将其作为 ticket_code 传递请求中的属性data jQuery 正在尝试将其序列化为字符串。 jQuery 认为 ticket_code是一个 HTMLInputElement (例如 <input type="text"> ),但它实际上是一个 jQuery 对象,因此无法将其序列化为字符串。

AJAX 请求返回浏览器后您想要执行的任何操作都应该在 success 中完成打回来。其次,您需要使用ticket_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" );
}
});
}

关于javascript - yii,ajax,javascript 不调用操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25044974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com