2011-08-04 4 views
-1

Я пытаюсь разбить строку в двоеточие и проверить, было ли это успешно. api.php возвращает мне JSON.Javascript Split (ошибка?)

$.ajax({ 
    type: "POST", 
    url: "api.php", 
    data: { "somedata": "123"}, 
    success: function (data, status, xhr) { 
     if (data.indexOf("text") != -1) { 
      var meinjson = $.parseJSON(data); 
      for (var key in meinjson) { 
       if (meinjson.hasOwnProperty(key) && key=="text") { 
        text = meinjson[key]; 
        text = text.replace(/\+/g, " "); 
        text = decodeURIComponent(text); 
        if (text.indexOf(":") !== -1) { 
         text = text.split(/:(.+)?/); 
         var text1 = text[0]; 
         var text2 = text[1]; 
        } 
        if (text2 == undefined || text1 == undefined || text1 == void 0 || text2 == void 0 || text1=="" || text2=="") { 
         alert("fail"); 
        } 
       } 
      } 
     } 
    } 
}); 

Я не могу объяснить, почему Internet Explorer всегда попадают в последний, если но не светлячок и хром. Пример из данных является:

{"command":"SENDTEXT","text":"Lorem+Ipsum","command":"SENDTEXT","text":"Lorem+Ipsum+dolor","specialcommand":"CONNECTACCEPT"} 
+2

Каков пример значения 'text'? Точно, на что «если» вы имеете в виду? –

+0

Невероятно, что вы обнаружили ошибку в одной из самых основных функций ядра JS после многих лет ее использования. Тем не менее, мы не можем помочь вам разобраться, если мы не знаем, как выглядят данные, с которыми вы работаете, что «если» вы попали »и т. Д. – JAAulde

+0

Зачем вам нужен цикл for если вас интересует только meinjson.text? Не могли бы вы разместить пример текста, с которым имеете дело? – alnorth29

ответ

1

Вы не нашли }. Если вы отступали после первого if в функции success, вы увидите, где.

Update:

Ваш раскалывают на запятой, а значения «текста» в ваших данных не содержат запятые. Там, где указано "text":"Lorem+Ipsum", фактическое значение составляет "Lorem+Ipsum", оно не будет включать "text":.

+0

спасибо, это была ошибка в copy & paste. Это не проблема – Khazl

+0

OK, см. обновленный ответ. – alnorth29

0

Предложите рефакторинг вашего заявления, чтобы использовать ложные проверки. Undefined and void 0 are essentially the same. Наряду с пустой строкой, все они являются ложными значениями.

if (!text2 || !text1) 
{ 
    alert("fail"); 
}