gpt4 book ai didi

javascript - jQuery.post() 动态生成数据到服务器返回空响应

转载 作者:行者123 更新时间:2023-11-28 06:02:09 28 4
gpt4 key购买 nike

我在循环中生成一系列变量(使用 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;

?>

响应: 服务器响应:''

如果我在 JS 代码中设置静态索引,摆脱循环,例如:

var index = 0;

我得到了预期的结果:服务器响应:myVarName0

为什么会发生这种情况?又该如何解决呢?

最佳答案

假设 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 为 haha​​ha 的元素更改为响应文本。

这不会为您赢得任何奖品,但它会完成工作。

关于javascript - jQuery.post() 动态生成数据到服务器返回空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37193078/

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