Twitter API - no encoding
Twitter API - no encoding
我目前正在为大学做一个项目。我们正在尝试使用twitter api,但是查询遇到了一些问题。我想搜索一个完整的字符串,所以我需要把我的字符串放在引号中。(就像"我在为这整个刺痛而痛苦")问题是,我用来从twitter获取数组的命令以某种方式编码了整个字符串,但我需要不编码引号。我希望你们能理解我的问题。此外,我将发布我的js代码。
JS代码:首先我尝试了一个json命令,但它不起作用。后来我尝试了ajax,但遇到了同样的问题。当我在查询中使用引号时,不会得到响应。
$( document ).ready(function()
{
console.log("ready");
// div mit id unique1 - bei klick mache onClick1
$('a#unique1').bind('click', onClick1);
});
function onClick1(elem)
{
var inputString = $("#SearchInput").val();
var EncodedString = encodeURI(inputString);
console.log('test' + inputString);
var endNode = 'search/tweets.json?q=hate%20' + EncodedString + '&result_type=mixed&count=200';
/*
$.getJSON('twitter/twitter-proxy.php?url='+encodeURIComponent(endNode),
*/
$.ajax({
type: "GET",
url: 'twitter/twitter-proxy.php?url='+encodeURIComponent(endNode),
data: " ",
success: function(twitterResponse){
var respStr = "start";
console.log(twitterResponse);
console.log(twitterResponse.statuses);
for(var i = 0; i < twitterResponse.statuses.length; i++)
{
$('.container .apiCall ol').append('<li>'+ twitterResponse.statuses[i].created_at + '</br>' + twitterResponse.statuses[i].text.toLowerCase() + '</li>');
respStr = respStr + twitterResponse.statuses[i].created_at + twitterResponse.statuses[i].text.toLowerCase();
}
}
});
/*
function(twitterResponse)
{
var respStr = "start";
console.log(twitterResponse);
console.log(twitterResponse.statuses);
for(var i = 0; i < twitterResponse.statuses.length; i++)
{
$('.container .apiCall ol').append('<li>'+ twitterResponse.statuses[i].created_at + '</br>' + twitterResponse.statuses[i].text.toLowerCase() + '</li>');
respStr = respStr + twitterResponse.statuses[i].created_at + twitterResponse.statuses[i].text.toLowerCase();
}
*/
/*
// respSgtr = " ";
// write tweets to file
$.post("writer.php", { fileString:respStr},
function(response)
{
//alert("Data Loaded: " + data);
});
});*/
}
您的方法有缺陷。
- jQuery为您完成所有的参数编码。不要干涉,只需传递一个包含键和值的对象。不要从字符串的各个部分构建URL
- 重要的安全考虑:不要构建接受任何任意URL的服务器端代理脚本。这样做简直太愚蠢了
- 相反,更改PHP脚本以接受一组
operation
谓词,如"search"
,这些谓词与服务器端的正确URL硬连接 - 我建议使用
$.get()
和$.post()
而不是$.ajax()
,以获得更干净的代码 - 此外,使用
$.each()
而不是常规的for
循环。生成的代码将更加清晰易读 - 避免从字符串中构建HTML。尤其是如果字符串的部分来自一个完全不可信的来源,比如Twitter。使用jQuery的功能和DOM来安全地构建HTML。(如果你不确定我为什么提到XSS漏洞,请阅读相关内容)
建议的解决方案(appendText()
jQuery插件取自此处):
$.fn.appendText = function(text) {
return this.each(function() {
var textNode = document.createTextNode(text);
$(this).append(textNode);
});
};
$(function () {
$('a#unique1').on('click', function (event) {
$.get('twitter/twitter-proxy.php', {
operation: 'search',
params: {
q: 'hate ' + $("#SearchInput").val(),
result_type: 'mixed',
count: 200
}
}).done(function (twitterResponse) {
$.each(twitterResponse.statuses, function (index, status) {
$("<li>")
.appendText(status.created_at)
.append("<br>")
.appendText(status.text.toLowerCase())
.appendTo(".container .apiCall ol");
});
});
});
});
相关文章:
- Javascript GetElementByID has no value
- 谷歌地图API v3:Initial View is Fine,but Gray Box with No Map if
- Javascript window.open()toolbar=no不起作用
- Regex表示10位数字,其中没有't允许所有零、所有单个no和序列号
- `npm install` killed for large package.json, no npm-debug.lo
- YES或NO表示对象事件中的分号
- Wordpress AJAX with raw javascript? NO Jquery
- 禁用复选框上的输入框 jquery NO onchange
- no-op if 语句会导致 Google 图表失败
- No puedo comparar una variable con un cadena de tipo String
- 在javascript中访问当前页面的页面标题[no ajax]
- JavaScript 动态更改图像 src 的位置 - NO JQuery
- RequireJs in IE8: "no define call for.."
- MvcHtmlString without Razor Encoding
- HTML DOMs, ids vs no ids?
- AngularJS - 在第一个可见元素上应用 CSS 类(Preferred No JQuery)
- Elasticsearch https cors已启用,但仍获得No'访问控制允许来源'标头存在于请求的
- GWT应用程序中出现错误HTTP 404(“Script Tag Failure-no status available
- PhantomJS onResourceReceived no stream
- Twitter API - no encoding