2015-04-03 3 views
0

У меня проблема.Как передать данные json в .js-файлы

У меня есть этот код, чтобы создать данные JSON в locations.php

<?php 
    $locations = array(
      array('2479 Murphy Court', "Minneapolis, MN 55402", "$36,000", 48.87, 2.29, "property-detail.html", "assets/img/properties/property-01.jpg", "assets/img/property-types/apartment.png"), 
      array('3398 Lodgeville Road', "Golden Valley, MN 55427", "$28,000", 48.866876, 2.309639, "property-detail.html", "assets/img/properties/property-02.jpg", "assets/img/property-types/apartment.png") 
     ); 
?> 

<script type="text/javascript"> 
    var locations = "<?= json_encode($locations) ?>"; 
</script> 

Я хочу передать JSON в locations.js. Которое будет вызываться другим .js-файлом с функцией getScript. Я пытался вызвать locations.php но не работает, поэтому я создать locations.js для тестирования и он работает

Не работает

$.getScript("assets/php/locations.php", function(){ 

Работа

$.getScript("assets/js/locations.js", function(){ 

locations.js

var locations = [ 
    ['2479 Murphy Court', "Minneapolis, MN 55402", "$36,000", 48.87, 2.29, "property-detail.html", "assets/img/properties/property-01.jpg", "assets/img/property-types/apartment.png"], 
    ['3398 Lodgeville Road', "Golden Valley, MN 55427", "$28,000", 48.866876, 2.309639, "property-detail.html", "assets/img/properties/property-02.jpg", "assets/img/property-types/apartment.png"], 
]; 

Может ли кто-нибудь мне помочь? Спасибо. Извините за плохой английский и, может быть, трудно понять

+1

Возможно, он не принят, потому что у вас нет заголовка Content-Type, установленного в 'text/javascript'. Сделайте 'header ('Content-Type: text/javascript');' в верхней части файла PHP. – Keelan

+0

@NarendraSisodia проблема в том, что я не могу заставить ее работать с location.php –

+0

@CamilStaps все еще не работает, есть ли какие-либо решения? но спасибо за предложение: D –

ответ

2

Я не уверен, что понял, что вам нужно. Ваш файл PHP нужно Ouput объект JSON: location.php

<?php 

$locations = array(
    array('2479 Murphy Court', "Minneapolis, MN 55402", "$36,000", 48.87, 2.29, "property-detail.html", "assets/img/properties/property-01.jpg", "assets/img/property-types/apartment.png"), 
    array('3398 Lodgeville Road', "Golden Valley, MN 55427", "$28,000", 48.866876, 2.309639, "property-detail.html", "assets/img/properties/property-02.jpg", "assets/img/property-types/apartment.png") 
); 
header('Content-Type: application/json'); 
die(json_encode($locations)); 

    ?> 

Затем вы можете загрузить его с JQuery

$.getJSON("location.php", function(data) { 
    // do whatever you want with data 
    console.log(data); 
}); 

Если вы хотите, чтобы загрузить скрипт, который location.php выходной

<?php 
    $locations = array(
      array('2479 Murphy Court', "Minneapolis, MN 55402", "$36,000", 48.87, 2.29, "property-detail.html", "assets/img/properties/property-01.jpg", "assets/img/property-types/apartment.png"), 
      array('3398 Lodgeville Road', "Golden Valley, MN 55427", "$28,000", 48.866876, 2.309639, "property-detail.html", "assets/img/properties/property-02.jpg", "assets/img/property-types/apartment.png") 
     ); 
?> 
var locations = <?= json_encode($locations) ?>; 

Тогда вы можете загрузить его через jQuery.getScript.

+0

Это не объясняет, почему он * работает * с location.js. – Keelan

+0

работает с location.js, потому что location.js является допустимым файлом javascript. Попробуйте запустить файл location.php, сохраните вывод как .js-файл и укажите его на главной странице, это вызовет ошибку, означающую, что у вас есть синтаксические ошибки. Файл js не должен содержать тег. – RafH

+0

Большое спасибо, я попробовал последний, и все просто отлично работает ..Большое спасибо ^^ –

1

Прежде всего, удалите тег script из файла PHP. Его вывод должен выглядеть так же, как и ваши location.js.

Если после этого все еще не работает, возможно, вам необходимо установить заголовок Content-Type. Добавить в верхней части файла PHP:

header('Content-Type: text/javascript'); 

Эта линия должна идти перед тем ничего отправляется в выходной поток.

Смежные вопросы