gpt4 book ai didi

javascript - 在 php laravel 中转义单引号

转载 作者:行者123 更新时间:2023-11-30 20:59:33 25 4
gpt4 key购买 nike

我在位置数据库中有一个地址字段,值为 Shop 2197 - Block 1014 - Road 90 - Al-Delaa' Complex - Hamala,在我添加位置之前网站运行良好有了这个地址,谷歌地图插件就不再工作了,因为这个单引号导致了控制台中的 javascript 错误,

我的位置 Controller 获取函数:

public static function get() {
$locations = Location::with('country')->get();

return $locations;
}

我将位置加载到谷歌地图的脚本:

var locations = JSON.parse('{!! $locations !!}');
var lang = "{{ App::getLocale() }}";
$(locations).each(function(key, value) {
allLocationsPins.push({lat: parseInt(value.latitude), lng: parseInt(value.longitude)});
});

地址值中的单引号导致此错误,因为它没有转义。在从 Controller 返回它之前,我尝试将 JSON encode 函数添加到 locations 数组,但没有任何反应,我认为通过 Json_encode 转义单引号不起作用,因为 { !! $locations !!} 在脚本文件中,但是如果我试图删除 {!! !!} 字符串中的每个字符都会发生变化。

我该如何解决这个问题?如果 json_encode 不起作用,我还能使用什么?

我尝试在 forloop 中的单引号之前添加\,但由于某种原因它没有做任何事情,这是 forloop 和输出。

public static function get() {
$locations = Location::with('country')->get();

foreach ($locations as $location) {
$location["address"] = str_replace("'","\'",$location["address"]);
}
var_dump($locations);
return $locations;
}


// PART OF VAR DUMP OUTPUT..

array(14) {
["id"]=>
int(7)
["title"]=>
string(6) "Hamala"
["title_ar"]=>
NULL
["address"]=>
string(62) "Shop 2197 - Block 1014 - Road 90 - Al-Delaa\' Complex - Hamala"
["address_ar"]=>
NULL
["latitude"]=>
string(9) "26.166246"
["longitude"]=>
string(9) "50.468510"
["phone_numbers"]=>
string(13) "+973 17610612"
["customer_service_email"]=>
string(28) "Marketing@aljasser-group.net"
["working_hours"]=>
string(84) "From 09:00 AM to 01:00 PM | Evening Shift: From 04:00 PM to 08:00 PM | Friday is off"
["working_hours_ar"]=>
NULL
["country_id"]=>
int(3)
["created_at"]=>
string(19) "2017-11-13 16:21:15"
["updated_at"]=>
string(19) "2017-11-06 19:01:54"
}
["original":protected]=>
array(14) {
["id"]=>
int(7)
["title"]=>
string(6) "Hamala"
["title_ar"]=>
NULL
["address"]=>
string(61) "Shop 2197 - Block 1014 - Road 90 - Al-Delaa' Complex - Hamala"
["address_ar"]=>
NULL
["latitude"]=>
string(9) "26.166246"
["longitude"]=>
string(9) "50.468510"
["phone_numbers"]=>
string(13) "+973 17610612"
["customer_service_email"]=>
string(28) "Marketing@aljasser-group.net"
["working_hours"]=>
string(84) "From 09:00 AM to 01:00 PM | Evening Shift: From 04:00 PM to 08:00 PM | Friday is off"
["working_hours_ar"]=>
NULL
["country_id"]=>
int(3)
["created_at"]=>
string(19) "2017-11-13 16:21:15"
["updated_at"]=>
string(19) "2017-11-06 19:01:54"
}

如您所见,地址位置数组被发现两次,第一个已按预期更改,第二个 protected 且未更改,问题在于此处的行

["address"]=>
string(61) "Shop 2197 - Block 1014 - Road 90 - Al-Delaa' Complex - Hamala"

最佳答案

如果您的字符串有单引号,您传递给 JSON.parse() 的字符串变量将不起作用,因为该方法不接受它们。

首先尝试声明 '{!! $locations !!}' 在解析之前将其放入一个变量中,看看它是否有效,它不应该。

您必须使用\' 手动转义单引号

例子:

var aString = '{ "name":"John", "age":30, "city":"New\'York"}'
var aJson = JSON.parse(aString)

关于javascript - 在 php laravel 中转义单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47266466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com