【问题标题】:javascript empty text ajaxjavascript 空文本 ajax
【发布时间】:2010-09-20 18:12:46
【问题描述】:

我有一个 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");}
  }
}

【问题讨论】:

  • 您可以发布您正在使用的代码的 sn-p 吗?如果我们了解您问题的背景,可能会更容易回答。
  • 这篇文章真的可以用更好的标题。
  • 天哪,手写的 AJAX。 /颤抖

标签: php javascript ajax class function


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      在您的函数中,如果您将 document.getElementById(idForm).elements[i].value 甚至 strReplaceTemp(在您的 postData +=)行中包含“encodeURI()”,您将不会遇到任何问题数据被正确接收。

      【讨论】:

      • 如果它不工作,那么你的 PHP 很可能是罪魁祸首。您可以尝试使用 escape 或 encodeURIComponent 而不是 encodeURI,但 encodeURI 应该可以解决问题。当您在尝试中抛出警报(postData)时,它会说什么?
      猜你喜欢
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      • 2016-03-27
      • 2012-09-15
      • 1970-01-01
      • 2011-03-18
      相关资源
      最近更新 更多