0

我有一个 php 脚本,我正在使用 ajax。我有一个与 ajax 类连接的 textarea 表单

当我传递像 ( &some text) 这样的文本时,函数返回一个空文本时的问题,我猜我对 ( &) 有问题。

javascript函数:

function sendFormData(idForm, dataSource, divID, ifLoading)
{
  var postData='';
  var strReplaceTemp;

  if(XMLHttpRequestObject)
  {
    XMLHttpRequestObject.open("POST", dataSource);
    XMLHttpRequestObject.setRequestHeader("Method", "POST " + dataSource + " HTTP/1.1");
      XMLHttpRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    XMLHttpRequestObject.onreadystatechange = function()
    {
      if (XMLHttpRequestObject.readyState == 4 &&
          XMLHttpRequestObject.status == 200)
      {
        try
        {
          var objDiv = document.getElementById(divID);
          objDiv.innerHTML = XMLHttpRequestObject.responseText;
        }
        catch(e){document.write("sendFormData: getElementById(divID) Error");}
      }
      else
      {
        if(ifLoading)
        {
          try
          {
            var objDiv = document.getElementById(divID);
            objDiv.innerHTML = "<img src=loading.gif>";
          }
          catch(e){document.write("sendFormData->ifLoading: getElementById(divID) Error");}
        }
      }
    }

    for(i=0; i<document.getElementById(idForm).elements.length - 1; i++)
    {
      strReplaceTemp = document.getElementById(idForm).elements[i].name;
      postData += "&aryFormData["+strReplaceTemp+"][]="+document.getElementById(idForm).elements[i].value;
    }

    postData += "&parm="+new Date().getTime();
    try
    {
      XMLHttpRequestObject.send(postData);
    }
    catch(e){document.write("sendFormData: XMLHttpRequestObject.send Error");}
  }
}
4

3 回答 3

1

确保您的 & 用 & 编码 如果您使用 Javascript 传递它。所有 & 都需要编码,否则某些浏览器可能会有点崩溃,任何验证器都会抱怨你。

于 2008-11-04T19:45:50.517 回答
0

当我看到 HTML 和 & 和问题时,我希望确保我的字符编码都已正确指定。

此外,您的 PHP 脚本中的代码可能会因未转义的“&”字符而窒息。

于 2008-11-04T19:41:03.427 回答
0

在您的函数中,如果您使用“encodeURI()”包装 document.getElementById(idForm).elements[i].value 甚至 strReplaceTemp(在您的 postData +=)行中,则数据正确不会有任何问题已收到。

于 2008-11-04T19:57:27.967 回答