我正在尝试学习使用AJAX。我去掉了程序的大部分复杂性,只是为了隔离我遇到的问题。所以我有一个文本区域,在它下面有一个div,上面打印着"STATUS"。在使用AJAX提交按钮时,我想将单词"STATUS"更改为我的变量STATUS的值,在这种情况下应该是"SUCCESS"。
相反,当我点击时,它会打印出单词STATUS。当我点击提交按钮时,似乎什么都没有发生。你知道我做错了什么吗?
$(document).ready(
function () {
$('#sub').live('click',
function () {
url = 'http://whatever.php'
success = "Success!"
$.ajax({
url: url,
type: 'POST',
data: null
dataType: 'xml',
async: false,
success: function (data, statusText, reqObj) {
status = $(data).find('status').text()
if (status == 'SUCCESS') {
$('#succ').html(status)
} //if( status == 'SUCCESS' ) {
else {
msg = $(data).find('msg').text()
alert('NOT ADDED: ' + msg)
return
} // else
} //function()
}) //$.ajax( {
} /* function */ ) //live(
} //function()
) //$(document).ready
HTML:
<div id="buttonArea">
<textarea name="txtarea" cols=80 rows=30>>THIS TEXT BOX
IS USED FOR THINGS I WILL WORK ON LATER
</textarea><br/>
<input type=submit value='Submit Textbox Info!' id='sub'>
</div>
<div class="float-left" id='succ'>STATUS</div>
我认为您的查找结果为空。尝试用替换
status = $(data).text()
我不确定你使用.find()的方式是否正确。它用于html元素,并期望传递一个jquery选择器或元素或jquery对象。
以下是更多详细信息http://api.jquery.com/find/
您想要的是获得响应文本,因此将ajax调用分配给一个变量:
xmlhttp = $.ajax({
然后在成功时使用您的回复文本:
status = xmlhttp.responseText;
您的代码对我来说很好,前提是:
(i) 您添加行中缺少的逗号:
数据:空,
(ii)php处理程序返回的内容类型是text/xml