Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getJSON和转义字符_Javascript_Jquery_Html_Ajax_Json - Fatal编程技术网

Javascript getJSON和转义字符

Javascript getJSON和转义字符,javascript,jquery,html,ajax,json,Javascript,Jquery,Html,Ajax,Json,我调用.getJSON,响应是一个JSON字符串,它有很多\“字符。 在chrome上启动页面时,回调根本不会启动。我了解到它不会启动,因为JSON字符串没有经过JSON验证(尽管它通过了JSONLint测试) 在eclipse的内置web浏览器中启动页面时,会触发回调,因此我可以向您显示响应: {"merchants": ["{\"loyaltyLevel\": 3, \"distance\": 100.5, \"imageUrl\": \"http://1.bp.blogspot.com/-

我调用.getJSON,响应是一个JSON字符串,它有很多\“字符。 在chrome上启动页面时,回调根本不会启动。我了解到它不会启动,因为JSON字符串没有经过JSON验证(尽管它通过了JSONLint测试)

在eclipse的内置web浏览器中启动页面时,会触发回调,因此我可以向您显示响应:

{"merchants": ["{\"loyaltyLevel\": 3, \"distance\": 100.5, \"imageUrl\": \"http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg\", \"name\": \"Papa Kapa\", \"credit\": 25000}", "{\"loyaltyLevel\": 3, \"distance\": 100.5, \"imageUrl\": \"http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg\", \"name\": \"Papa Kapa\", \"credit\": 25000}", "{\"loyaltyLevel\": 3, \"distance\": 100.5, \"imageUrl\": \"http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg\", \"name\": \"Papa Kapa\", \"credit\": 25000}", "{\"loyaltyLevel\": 3, \"distance\": 100.5, \"imageUrl\": \"http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg\", \"name\": \"Papa Kapa\", \"credit\": 25000}", "{\"loyaltyLevel\": 3, \"distance\": 100.5, \"imageUrl\": \"http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg\", \"name\": \"Papa Kapa\", \"credit\": 25000}"]}
我在那里做了一些调试,实际上Javascript不会解析这个

有什么想法吗

这是我的密码:

    <!DOCTYPE html>
<html>
<head>
  <style>img{ height: 100px; float: left; }</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <div id="images">

</div>
<script>
$.getJSON("some_url",
  function(data) 
  {
    alert("success");
  });
</script>

</body>
</html>

img{高度:100px;浮点:左;}
$.getJSON(“一些url”,
功能(数据)
{
警惕(“成功”);
});
以下是服务器端代码:

import logging
log = logging.getLogger(__name__)
import appcardrestapi.Errors
import sys
from pyramid.view import view_config
from pyramid.httpexceptions import HTTPUnauthorized, HTTPBadRequest
from appcardrestapi.BL.usermanagement import UserObj

class merchant():

    def __init__(self,name,imageUrl,loyaltyLevel,distance,credit):
        self.name = name
        self.imageUrl = imageUrl
        self.loyaltyLevel = loyaltyLevel
        self.distance = distance
        self.credit = credit

    def getJson(self):
        import json
        return json.dumps({'name':self.name, 'imageUrl':self.imageUrl,'loyaltyLevel':self.loyaltyLevel,'distance':self.distance,'credit':self.credit})


@view_config(route_name='GetMyMerchantsList', renderer='json')
def GetMyMerchantsList(request):

    rc = True
    #
    # Make sure got here with proprt JSON body, if not log and go home
    #
    try:
        log.debug('+ %s()', sys._getframe().f_code.co_name)
        #jsonBody = json.loads(request.GET)

        # Check authentication token
        authenticationToken = request.GET.getone('authenticationToken')
        token = authenticationToken.encode('ascii', 'ignore')

        user = UserObj.User(authenticationToken=token)

        rc, errorMsg = user.ValidateTokenAndLoadUser(request)
        import json


        if True == rc:
            location = request.GET.getone('location').encode('ascii', 'ignore')
            i = 0
            merchants = []
            while i < 5 :

                m = merchant('Papa Kapa','http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg',3,100.5,25000)
                print m.getJson()
                merchants.append(m.getJson())
                i = i + 1


            response = json.dumps({'merchants':merchants})
            return response

    except Exception as e:
        print e
        errorMsg = appcardrestapi.Errors.InvalideJsonPassed
        log.error('  %s(%s)' % (sys._getframe().f_code.co_name, errorMsg))
        rc = False
        import json
        response = json.dumps({'Error':errorMsg})
        return response
导入日志
log=logging.getLogger(_名称__)
导入appcardrestapi.Errors
导入系统
从pyramid.view导入视图\u配置
从pyramid.httpexceptions导入HTTPUnauthorized、HTTPBadRequest
从appcardrestapi.BL.usermanagement导入UserObj
类别商户():
定义初始(自我、姓名、图像URL、忠诚等级、距离、信用):
self.name=名称
self.imageUrl=imageUrl
self.loyaltyLevel=忠诚等级
self.distance=距离
信用
def getJson(self):
导入json
返回json.dumps({'name':self.name,'imageUrl':self.imageUrl,'loyaltyLevel':self.loyaltyLevel,'distance':self.distance,'credit':self.credit})
@查看配置(路由名称='GetMyMerchantsList',呈现器='json')
def GetMyMerchantsList(请求):
rc=真
#
#确保带着proprt JSON body来到这里,如果没有,记录并回家
#
尝试:
log.debug('+%s()',sys.\u getframe().f_code.co_name)
#jsonBody=json.loads(request.GET)
#检查身份验证令牌
authenticationToken=request.GET.getone('authenticationToken')
令牌=authenticationToken.encode('ascii','ignore')
user=UserObj.user(authenticationToken=token)
rc,errorMsg=user.ValidateTokenAndLoadUser(请求)
导入json
如果为True==rc:
location=request.GET.getone('location')。encode('ascii','ignore')
i=0
商户=[]
当我<5时:
m=商户(‘爸爸卡帕’,'http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg',3,100.5,25000)
print m.getJson()
append(m.getJson())
i=i+1
response=json.dumps({'merchants':merchants})
返回响应
例外情况除外,如e:
打印e
errorMsg=appcardrestapi.Errors.InvalideJsonPassed
日志错误(“%s(%s)”(sys.\u getframe().f\u code.co\u name,errorMsg))
rc=False
导入json
response=json.dumps({'Error':errorMsg})
返回响应

我看到了你的json lint响应

"{\"loyalty
你为什么有第一个

照规矩

"{\"loyaltyLevel\": 3, \"distance\": 100.5
您将发出->

"{"loyaltyLevel": 3, "distance": 100.5
所以我问为什么第一个

编辑: 我明白你为什么一开始就说“我知道”

你把它当作一根绳子。。。。哪个是坏的

与此相关的东西:

 "{"loyaltyLevel": 3,....}",
您应该移除周围的


并将其视为一个对象。

它是下面给出的实际JSON。它被正确解析,所有变量也都可以访问

{
    "merchants": [
        {
            "loyaltyLevel": 3,
            "distance": 100.5,
            "imageUrl": "http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg",
            "name": "Papa Kapa",
            "credit": 25000
        },
        {
            "loyaltyLevel": 3,
            "distance": 100.5,
            "imageUrl": "http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg",
            "name": "Papa Kapa",
            "credit": 25000
        },
        {
            "loyaltyLevel": 3,
            "distance": 100.5,
            "imageUrl": "http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg",
            "name": "Papa Kapa",
            "credit": 25000
        },
        {
            "loyaltyLevel": 3,
            "distance": 100.5,
            "imageUrl": "http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg",
            "name": "Papa Kapa",
            "credit": 25000
        },
        {
            "loyaltyLevel": 3,
            "distance": 100.5,
            "imageUrl": "http://1.bp.blogspot.com/-hY-Kri63wzs/TeHzpxJ2BJI/AAAAAAAAA4Q/pmq2Yvki8WY/s1600/funny-dog-picture-ass.jpg",
            "name": "Papa Kapa",
            "credit": 25000
        }
    ]
}

用于验证它。如果它是从url返回的,它应该是正确可见的。

我认为,因为商家的子项是作为一个字符串处理的,而不是编码为JSON的对象。我们需要查看服务器端代码,而不是Javascript。