2013-03-06 2 views
0

У меня есть код ajax, как показано ниже. Проблема теперь в моем php. Я просто пишу одно эхо как код, который не смог вставить мой sql, и я попытался сравнить здесь, но я заметил, что у него есть дополнительные строки, которые приводят к сбою этого утверждения, если (responseData == "SMGFE \ n"). Я даже добавил дополнительный «\ n» вместе, чтобы проверить, но он тоже не работает. Любое решение этой проблемы?Результаты Ajax от php имеют дополнительную новую строку

function ajaxLoad(url,postData,plain) { 
      //alert("in url : "+url); 
      var http_request = false; 

      if (window.XMLHttpRequest) { // Mozilla, Safari, ... 
       http_request = new XMLHttpRequest(); 
       if (http_request.overrideMimeType && plain) { 
        http_request.overrideMimeType('text/plain'); 
       } 
      } else if (window.ActiveXObject) { // IE 
       try { 
        http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
       } catch (e) { 
        try { 
         http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
        } catch (e) {} 
       } 
      } 
      if (!http_request) { 
       alert('Giving up :(Cannot create an XMLHTTP instance'); 
       return false; 
      } 
      http_request.onreadystatechange = function() { 
       if (http_request.readyState == 4) { 
        if (http_request.status == 200) { 
          var responseData = http_request.responseText; 
         alert("http response :"+responseData+"TEST"); 
         if(responseData=="SMGFE\n") 
          { 
           alert("Gname "+document.getElementById("gname").value+" Already Exist"); 
          } 
          else{ 

          alert("Successfully Inserted"); 
          clearSelection();     
           window.opener.location.reload(); 
          window.close(); 

         } 
        } 
        else { 
         alert('Request Failed: ' + http_request.status); 
        } 
       } 
      }; 
     //alert("before post data"+postData.length); 
      if (postData) { // POST 
        //alert("post data"+postData.length); 
       http_request.open('POST', url, true); 
       http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
       http_request.setRequestHeader("Content-length", postData.length); 
       http_request.send(postData); 
      } 
      else { 
       http_request.open('GET', url, true); 
       http_request.send(null); 
      } 
     } 

ответ

1

вы бы лучше попытаться удалить разрывы строк и любое белое пространство от responseData, либо в файле PHP попробовать

trim($your_php_variable_responseData); 

См php manual

> This function returns a string with whitespace stripped from the beginning 
and end of str. Without the second parameter, trim() will strip these characters: 

" " (ASCII 32 (0x20)), an ordinary space. 
"\t" (ASCII 9 (0x09)), a tab. 
"\n" (ASCII 10 (0x0A)), a new line (line feed). 
"\r" (ASCII 13 (0x0D)), a carriage return. 
"\0" (ASCII 0 (0x00)), the NUL-byte. 
"\x0B" (ASCII 11 (0x0B)), a vertical tab. 

Или вы можете попробовать в javscript

responseData= responseData.replace(/^\s+|\s+$/g,""); 
+0

Я пробовал ваш метод javascript, он работает. Но почему эхо имеет дополнительные \ n причины для этого или это нормальное поведение? – biz14

+0

его определенно не нормальное поведение, но не видя php-код, трудно (невозможно) сказать, что вызывает его –

1

Я не совсем понимаю, что вы пытаетесь сделать, но разве это не решение вашей проблемы?

if(responseData.substr(0,5) =="SMGFE")