Может получить JSON из файла .txt, но не из сгенерированного PHP JSON с помощью JQuery - PullRequest
0 голосов
/ 16 марта 2012

Привет. Я пытаюсь выполнить запрос ajax с помощью jquery.Если я использую локально сохраненный файл .txt, у меня не возникает проблем.Проблема возникает всякий раз, когда я пытаюсь запросить сгенерированный php json.Вот код:

$('#find').click(function(){
$.getJSON('http://localhost/public/ProductCatalog/searchindex/txt.php', function(data) {
var items = []; 
$.each(data, function(key, val) {
        pushStr = '<div class="prod-container">';
        pushStr += '   <div class="prod-image-container"><img class="prod-img" src="' + val['foto'] + '"/></div>';
        pushStr += '    <div class="prod-desc-container">' + val['title'] + '</div>';
        pushStr += '    <input class="id" type="hidden" value="' + val['id'] + '"/>';
        pushStr += '    <input class="title" type="hidden" value="' + val['title'] + '"/>';
        pushStr += '</div>';
        items.push(pushStr);
    });

    items.push('<div style="clear:both;"></div>');
    $('#prod-body').html(items.join(''));
    $('img.prod-img').each(function (index, element){
        fitImage(element, 75, 110);
    });
    makeDraggable();
});
});

Итак, если я создаю файл file.txt, копирующий / вставляющий ту же информацию, которую я генерирую из http://localhost/public/ProductCatalog/searchindex/txt.php, и использую ее в качестве параметра, я получаю содержимое,Но когда я запускаю код как есть, ничего не выполняется.

file.txt пример:

{
    "item1": {
        "foto": "item1.jpg",
        "title": "Teclado roland fantom-g8  las teclas con contrapeso",
        "id": "1",
        "price": "56090.25"
    },
    "item2": {
        "foto": "item2.jpg",
        "title": "Teclado roland v-piano  lo cambia todo",
        "id": "1",
        "price": "85501.79"
    },
    "item3": {
        "foto": "item3.jpg",
        "title": "Teclado roland ax-synth  teclado 49 teclas (dinÃ",
        "id": "1",
        "price": "13034.05"
    },
    "item4": {
        "foto": "item4.jpg",
        "title": "Teclado roland fantom g-6 fuente de sonido avanzada",
        "id": "1",
        "price": "39989.14"
    },
    "item5": {
        "foto": "item5.jpg",
        "title": "Teclado gw-8l roland gw-8l -bstock",
        "id": "1",
        "price": "11627.32"
    },
    "item6": {
        "foto": "item6.jpg",
        "title": "Teclado disney",
        "id": "1",
        "price": "605.00"
    }
}

вот код php:

    // action body usinf zend framework
    $this->getHelper('viewRenderer')->setNoRender();
    $index = Zend_Search_Lucene::open('/data/prod-catalog');
    $results = $index->find('teclado roland');
    $first = $this->_request->getParam('first');

    header('Cache-Control: no-cache, must-revalidate');
    header('Content-type: application/json');

    $i=1;

    echo '{';
    foreach ($results as $result){
        echo '"item'.$i.'": {'."\n";
        echo '    "foto": "'.$result->foto.'",'."\n";
        echo '    "title": "'.ucfirst(strtolower($result->titulo)).'",'."\n";
        echo '    "id": "'.'1'.'",'."\n";
        echo '   "price": "'.ucfirst(strtolower($result->precio)).'"'."\n";
        echo ($i<count($results) && $i<6)? '},'."\n": '}'."\n".'}'; 
        $i++;
        if($i==7){
            break;
        }
    }

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Я нашел это, это была проблема безопасности.Я запускал HTML с функциональностью js в локальной сети, и сервер не позволил бы это.Как только я запустил его на сервере, это было решено.

0 голосов
/ 16 марта 2012

Попробуйте экранировать 'или "из ваших строк, когда вы создаете JSON с addlashes ().

...