我在循环中生成一系列变量(使用JS),并且我根据当前索引为它们分配.id
和.name
。在每个循环中,我使用jQuery.post()
方法向服务器发送请求,但返回的响应只是一个空变量。
这是代码:
的JavaScript
for ( var index = 0; index < 5; index++ ) {
var myVar = document.createElement('p');
myVar.id = 'myVarID' + index;
myVar.name = 'myVarName' + index;
//Send request to server
$(document).ready(function(){
var data = {};
var i = 'ind';
var id = myVar.id;
var name = myVar.name;
data[id] = name;
data[i] = index;
$.post("script.php", data, function(data){
console.log("Server response:", data);
});
});
}
PHP
<?php
$index = $_POST['ind'];
$myVar = $_POST['myVarID'.$index];
echo $myVar;
?>
回复: Server response: ''
如果我在JS代码中设置一个静态索引,摆脱循环,例如:
var index = 0;
我得到了预期的结果:Server response: myVarName0
为什么会这样?我该如何解决?
答案 0 :(得分:0)
假设php文件正常。我用这个:
function doThing(url) {
getRequest(
url,
doMe,
null
);
}
function doMe(responseText) {
var container = document.getElementById('hahaha');
container.innerHTML = responseText;
}
function getRequest(url, success, error) {
var req = false;
try{
// most browsers
req = new XMLHttpRequest();
} catch (e){
// IE
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
// try an older version
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
return false;
}
}
}
if (!req) return false;
if (typeof success != 'function') success = function () {};
if (typeof error!= 'function') error = function () {};
req.onreadystatechange = function(){
if(req .readyState == 4){
return req.status === 200 ?
success(req.responseText) : error(req.status)
;
}
}
var thing = "script.php?" + url;
req.open("GET", thing, true);
req.send(null);
return req;
}
然后像这样使用它:
doThing("myVarID="+myVar.id+"&i="+index);
另外,您必须将PHP更改为以下内容:
<?php
$index = $_GET['ind'];
$myVar = $_GET['myVarID'.$index];
echo $myVar;
?>
显然,需要根据自己的需要编辑此代码
函数doMe是在网页响应时要做的事情,在该示例中,我将带有id hahaha的元素更改为响应文本。
这不会赢得任何奖品,但它可以完成任务。
答案 1 :(得分:0)
<强>解决方案强>
它正常工作:
function getBySearchTerms(searchCreator) {
return $.when.apply($, [
this.getByConstituentId(5350),
this.getByConstituentId(5349)
]);
}
工作代码
$(document).ready()