Как объяснил scompt.com , запрос может завершиться ошибкой. Используйте этот код, чтобы получить ошибку запроса или правильный результат:
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query("
SELECT * FROM Users
WHERE UserName LIKE '".mysql_real_escape_string($username)."'
");
if($result)
{
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
}
} else {
echo 'Invalid query: ' . mysql_error() . "\n";
echo 'Whole query: ' . $query;
}
Для получения дополнительной информации см. Документацию для mysql_query()
.
Фактической ошибкой были одиночные кавычки, так что переменная $username
не анализировалась. Но вы действительно должны использовать mysql_real_escape_string($username)
, чтобы избежать инъекций SQL.
В конце я решил использовать директиву ref
Vue . Это позволяет ссылаться на компонент для родителя для прямого доступа.
Например,
Укомплектовать compendent в моем родительском экземпляре:
var vm = new Vue({
el: '#app',
components: { 'my-component': myComponent }
});
компонент в шаблоне / html со ссылкой:
<my-component ref="foo"></my-component>
Теперь, в другом месте, я могу получить доступ к компоненту извне
<script>
vm.$refs.foo.doSomething(); //assuming my component has a doSomething() method
</script>
См. эту скрипту для примера: https: //jsfiddle.net/xmqgnbu3/1/
(старый пример с использованием Vue 1: https://jsfiddle.net/6v7y6msr/ )
Это простой способ получить доступ к методам компонента из другого компонента
// This is external shared (reusable) component, so you can call its methods from other components
export default {
name: 'SharedBase',
methods: {
fetchLocalData: function(module, page){
// .....fetches some data
return { jsonData }
}
}
}
// This is your component where you can call SharedBased component's method(s)
import SharedBase from '[your path to component]';
var sections = [];
export default {
name: 'History',
created: function(){
this.sections = SharedBase.methods['fetchLocalData']('intro', 'history');
}
}
Вы можете использовать систему событий Vue
vm.$broadcast('event-name', args)
и
vm.$on('event-name', function())
Вот скрипка: http://jsfiddle.net/hfalucas/wc1gg5v4/ 59 /
В Vue2 это применяется:
var bus = new Vue()
// в методе компонента A
bus.$emit('id-selected', 1)
// в созданном крюке компонента B
bus.$on('id-selected', function (id) {
// ...
})
См. здесь для документов Vue. И здесь более подробно описывает, как настроить эту шину событий точно.
Вот простой
this.$children[indexOfComponent].childsMethodName();
Предположим, что у вас есть дочерний компонент child_component
:
<template>
<h1>I am the child component</h1>
</template>
export default {
name: 'child-component',
methods: {
child_method () {
console.log('I got clicked')
}
}
}
Теперь вы хотите выполнить child_method
из родительского компонента:
<template>
<div>
<button @click="exec">Execute child component</button>
<child-cmp ref="child"></child_cmp>
</div>
</template>
export default {
name: 'parent-component',
methods: {
exec () {
this.$refs.child.child_method() //execute the method belong to child
}
}
}
Если вы хотите выполнить родительский компонентный метод из дочернего компонента:
this.$parent.name_of_method()