我有两个问题想请教。webapp 应该通过 POST (ajax) 发送“somedata”,然后将服务器返回的数据放入 div。我使用 jQuery、jQuery mobile 和 phonegap。所以 HTML 看起来像这样:
<div id="searchingform">
<form method="post" id="sform">
<input type="text" name="group" id="somedata" value="" placeholder="Enter SOMEDATA that will be posted to the server"/>
<div id="buttoncover">
<input type="button" id="loadbut" value="Load" data-mini="true" onClick="sendPost();">
</div>
</form>
</div>
<div id="cnt"></div>
<div id="output"></div>
这是JS代码:
function sendPost() {
$.ajax({
type:'post',
url:'http://thepagethatanswers.com',
data:{'group':$('[name=somedata]').val()},
response:'html',
success:function (data) {
$('#cnt').html(data);
},
error: function(){
$('#output').html('Error');
}
});
};
所以用户填写表单,按下按钮,发送到服务器,然后将答案填写到#cnt
div 中。通常它可以工作,但是:
1.按下按钮后,它保持按下状态。它可以工作,但具有按下按钮的外观。jQuery 做到了
<div data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span" data-theme="b" data-mini="true" data-disabled="false" class="ui-btn ui-shadow ui-btn-corner-all ui-mini ui-btn-up-b" aria-disabled="false">
<span class="ui-btn-inner">
<span class="ui-btn-text">Load</span>
</span>
<input type="button" id="loadbut" value="Load" data-mini="true" onclick="sendPost();return true;" class="ui-btn-hidden" data-disabled="false">
</div>
从
<input type="button" id="loadbut" value="Load" data-mini="true" onClick="sendPost();">
我试着.removeclass('ui-btn-active')
让它出现,但它没有效果。我试图完全重写按钮,它使它看起来像不活动的,但后来它并不想看起来像被按下了。我只需要它能够在外观方面表现出正常行为。
2.需要将表单中的“somedata”重新发送到服务器,以更新信息并将其加载到#cnt
. 这是我的第二个问题:直到表单中的“somedata”没有更改为其他值,POST 才会发生。示例:我们在输入中输入“1”,按下按钮,得到答案,它填充#cnt
- 没关系。然后我们再次按下按钮以更新信息,但没有任何反应。更改输入值,按下按钮 - 它#cnt
根据输入的新值更新。我需要它能够多次按下按钮,它会发送相同的值并获得正确的值#cnt
。服务器代码相当复杂,但实际上它只是获取$_POST['somedata']
然后返回 html。
UPD:刷新 ajax 请求的解决方案:我向发送的数据添加了一个变量,现在它看起来像这样:
data:{'group':$('[name=group]').val(),tstamp: new Date().getTime()}
所以每次都会发送请求并data
刷新。