选择框到文本区域到PHP:转移未显示在$_POST
select box to textarea to PHP: transfer not appearing in $_POST
这是一个奇怪的问题。
我有以下JavaScript代码:
function doTransfer(target, source)
{
var targetObj = f_getElement(target);
var tempText = targetObj.value.split(',');
var len = tempText.length;
var targetText = new Array;
var text;
var selection;
var split;
for(var i = 0; i < len; i ++)
{
text = trim(tempText[i]);
if(text)
targetText.push(text);
}
var sourceObj = f_getElement(source);
len = sourceObj.options.length;
for(i = 0; i < len; i++)
{
split = sourceObj.options[i].value.split('_');
selection = decode_base64(split[1]);
// When searching for existing word, we ignore case as different words may be indicated by different use of case on the same letters.
// i.e. we trust the user to get it right.
if(sourceObj.options[i].selected && (searchArray(targetText, selection) == -1))
targetText.push(selection);
}
targetObj.value = targetText.join(',');
}
function f_getElement(id)
{
return document.getElementById(id);
}
这一切都工作正常,并将多个选择(base64_encoded)从选择框传输到目标文本区域(base64_decoded - 此处未显示javascript代码)。
假设我传输了 3 个选择("aaaa"、"aaaa"、"aaaaa"),然后在文本区域中得到"aaa,aaa,aaaaa"。 这就是我想要的。
然后我点击提交按钮,但是,我没有得到 'aaa,aa,aa' 在我的 $_POST 变量中,我只得到'aaa,aaaa'。
我注意到的一些事情:
- "aaa,aaaa"转移正确显示在 $_POST 中。
- 转移的"aaaaa"正确显示为 _POST 美元。
- "aaa,aaaaa"转移正确显示为 _POST 美元。
- 相同的错误和成功出现在"b"的类似变体中。
- "UT1,UT2,UT3,UT4,UT5"转移正确显示为 _POST 美元。
- *如果我在文本区域中输入"aaa,aaaa,aaaaa",它确实以 $_POST 正确显示。
我很困惑,不知道从哪里开始追踪问题。
问候
马克
网关功能:
/**
* Gateway to AJAX javascript functions
* @param input - JSON string representing an array of sets of instructions to be processed in numerical order. At the very
* least a startFunction() method should be present in each set.
*/
function gateway(input)
{
var parsedInput = JSON.parse(input);
var inputLen = parsedInput.length;
if(gateway.aobj_index == undefined)
gateway.aobj_index = -1;
gateway.aobj_index++;
for(var i = 0; i < inputLen; i++)
{
if(parsedInput[i].startFunction != undefined)
{
A_OBJ[gateway.aobj_index] = new AJAXOBJECT();
A_OBJ[gateway.aobj_index].input = parsedInput[i];
A_OBJ[gateway.aobj_index].evalReturn = eval('(' + A_OBJ[gateway.aobj_index].input.startFunction + '())');
if(A_OBJ[gateway.aobj_index].evalReturn == false)
{
return false;
}
}
else
{
alert('No startFunction() defined');
return false;
}
gateway.aobj_index++;
}
return true;
}
/**
* The object used for independent AJAX instances
*/
function AJAXOBJECT()
{
//properties
this.input = null;
this.processedScript = null;
this.phpResponse = null;
this.targetObj = null;
this.evalReturn = null;
// methods
this.checkInput = checkInput;
this.doXmlHttp = doXmlHttp;
}
/**
* Check required input parameters are present in input
* @param input array
* @return false|true
*/
function checkInput(inputArray)
{
var len = inputArray.length;
for(var i = 0; i < len; i++)
{
if(this.input[inputArray[i]] == undefined)
{
alert('required input parameter is missing: ' + inputArray[i]);
return false;
}
}
return true;
}
/**
* Create the xmlHttp object
* @return xmlHttp object
*/
function createXmlHttpObject()
{
var xmlHttp = false;
//Check if we are using IE.
try
{
//If the javascript version is greater than 5.
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
//If not, then use the older active x object.
try
{
//If we are using IE.
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E)
{
//Else we must be using a non-IE browser.
xmlHttp = false;
}
}
//If we are using a non-IE browser, create a JavaScript instance of the object.
if (!xmlHttp && typeof XMLHttpRequest != undefined)
{
xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}
/**
* Execute the xmlHTTP object
*
* @return true|false
*/
function doXmlHttp()
{
if(this.targetObj == null)
{
alert('No AJAXOBJECT targetObj property set');
return false;
}
if(this.processedScript == null)
{
alert('No AJAXOBJECT processedScript property set');
return false;
}
var targetObj = this.targetObj;
var xmlHttp = createXmlHttpObject();
xmlHttp.open("GET", this.processedScript, true);
//alert(this.processedScript);
xmlHttp.onreadystatechange = function()
{
if((xmlHttp.readyState == 4) && (xmlHttp.status == 200))
{
try
{
this.phpResponse = JSON.parse(xmlHttp.responseText);
}
catch(err)
{
alert('HTTP status: ' + xmlHttp.status + '. ' + err.message + ' ERROR. PHP says:'n' + xmlHttp.responseText);
return false;
}
if(this.phpResponse.ERROR)
{
alert('PHP ERROR:'n' + this.phpResponse.ERROR);
return false;
}
if(this.phpResponse.innerHTML)
targetObj.innerHTML = this.phpResponse.innerHTML;
//alert(this.phpResponse.next);
// Further action to be taken?
if(this.phpResponse.next != undefined)
gateway(JSON.stringify([this.phpResponse]));
}
}
xmlHttp.send(null);
A_OBJ[gateway.aobj_index].xmlHttp = xmlHttp;
return true;
}
/**
* Get an object for the requested HTML element ID
* @return element object
*/
function f_getElement(id)
{
return document.getElementById(id);
}
好的,我发现了错误,这是一个base64编码问题。
首先是带有损坏代码的jsFiddle:http://jsfiddle.net/mexd7/2/
奥本火虫控制台:https://getfirebug.com/logging
并玩一些添加单词,看看你看到什么。
现在这里是固定版本:http://jsfiddle.net/mexd7/1/
function decode_base64(s)
{
var e={},i,k,v=[],r='',w=String.fromCharCode;
var n=[[65,91],[97,123],[48,58],[43,44],[47,48]];
for(z in n) {
for(i=n[z][0];i<n[z][1];i++) {
v.push(w(i));
}
}
for(i=0;i<64;i++) {
e[v[i]]=i;
}
for(i=0;i<s.length;i+=72) {
var b=0,c,x,l=0,o=s.substring(i,i+72);
for(x=0;x<o.length;x++) {
c=e[o.charAt(x)];b=(b<<6)+c;l+=6;
while(l>=8) {
var charCode = (b>>>(l-=8))%256;
if (charCode > 31) {
// only add printable chars
r+=w(charCode);
}
}
}
}
return r;
}
您的 base64 编码器存在问题,但我用解码解决了它。不要在字符串中添加像 ''0 这样的不可引用的字符。
http://www.asciitable.com/
相关文章:
- 运行POST时显示图像
- MVC AJAX POST 请求在控制器中显示为空
- 在 post() 请求后在 jquery 中显示图像
- 通过发送POST参数在ExtJS 4中显示PDF
- jQuery POST to PHP显示在浏览器中,但不显示在PHP文件中
- qoxdoo:POST方法,不在URL中显示参数
- j查询冲突!在WordPress的POST EDIT页面上显示白屏
- 显示微调器,直到 iframe 加载 http post 响应
- 从 ajax .post 方法执行 PHP 页面后显示它
- jQuery $.post() 函数难以不显示结果
- 用于表单验证的 jQuery post 函数只允许 alert() 显示返回的数据
- 显示来自 post jquery 的 json 数据
- 在文本框中显示对 GET 和 POST 请求的响应
- 提交 JQuery 表单 $.post() 处理成功时的显示消息
- 为什么firebug控制台中的POST没有显示任何内容,并且在下面的jQuery代码中没有上传文件
- 使用ajax加载post数据,并且在源中显示类别ID是不安全的
- AJAX POST返回数据未显示
- php post显示空消息,没有输出
- 表单POST未显示在控制器中
- 我如何处理时区/偏移时,显示&;post &;;来自不同的用户